projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added some more UNIMPL entries.
[pspp]
/
src
/
language
/
dictionary
/
modify-variables.c
diff --git
a/src/language/dictionary/modify-variables.c
b/src/language/dictionary/modify-variables.c
index 1b0a27b061016591056d3fead86ee23f28aa3bbf..3bbf844f565ef465acada22596541f1fd6c21eed 100644
(file)
--- a/
src/language/dictionary/modify-variables.c
+++ b/
src/language/dictionary/modify-variables.c
@@
-18,21
+18,25
@@
02110-1301, USA. */
#include <config.h>
02110-1301, USA. */
#include <config.h>
+
#include <stdlib.h>
#include <stdlib.h>
-#include <libpspp/message.h>
-#include <libpspp/array.h>
+
+#include <data/dictionary.h>
+#include <data/procedure.h>
+#include <data/variable.h>
+#include <language/command.h>
+#include <language/lexer/lexer.h>
+#include <language/lexer/variable-parser.h>
#include <libpspp/alloc.h>
#include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
+#include <libpspp/array.h>
#include <libpspp/bit-vector.h>
#include <libpspp/bit-vector.h>
-#include <language/command.h>
#include <libpspp/compiler.h>
#include <libpspp/compiler.h>
-#include <data/dictionary.h>
-#include <libpspp/message.h>
#include <libpspp/hash.h>
#include <libpspp/hash.h>
-#include <language/lexer/lexer.h>
+#include <libpspp/message.h>
+#include <libpspp/message.h>
#include <libpspp/misc.h>
#include <libpspp/str.h>
#include <libpspp/misc.h>
#include <libpspp/str.h>
-#include <data/procedure.h>
-#include <data/variable.h>
#include "gettext.h"
#define _(msgid) gettext (msgid)
#include "gettext.h"
#define _(msgid) gettext (msgid)
@@
-69,7
+73,7
@@
struct var_modification
size_t rename_cnt;
};
size_t rename_cnt;
};
-static
int
rearrange_dict (struct dictionary *d,
+static
bool
rearrange_dict (struct dictionary *d,
const struct var_modification *vm);
/* Performs MODIFY VARS command. */
const struct var_modification *vm);
/* Performs MODIFY VARS command. */
@@
-88,7
+92,7
@@
cmd_modify_vars (void)
size_t i;
size_t i;
- if (proc_make_temporary_transformations_permanent ())
+ if (proc_make_temporary_transformations_permanent (
current_dataset
))
msg (SE, _("MODIFY VARS may not be used after TEMPORARY. "
"Temporary transformations will be made permanent."));
msg (SE, _("MODIFY VARS may not be used after TEMPORARY. "
"Temporary transformations will be made permanent."));
@@
-138,7
+142,7
@@
cmd_modify_vars (void)
"of variables."));
goto done;
}
"of variables."));
goto done;
}
- dict_get_vars (d
efault_dict
, &v, &nv, 1u << DC_SYSTEM);
+ dict_get_vars (d
ataset_dict (current_dataset)
, &v, &nv, 1u << DC_SYSTEM);
}
else
{
}
else
{
@@
-148,7
+152,7
@@
cmd_modify_vars (void)
free (v);
goto done;
}
free (v);
goto done;
}
- if (!parse_variables (d
efault_dict
, &v, &nv,
+ if (!parse_variables (d
ataset_dict (current_dataset)
, &v, &nv,
PV_APPEND | PV_NO_DUPLICATE))
{
free (v);
PV_APPEND | PV_NO_DUPLICATE))
{
free (v);
@@
-190,7
+194,7
@@
cmd_modify_vars (void)
msg (SE, _("`(' expected on RENAME subcommand."));
goto done;
}
msg (SE, _("`(' expected on RENAME subcommand."));
goto done;
}
- if (!parse_variables (d
efault_dict
, &vm.rename_vars, &vm.rename_cnt,
+ if (!parse_variables (d
ataset_dict (current_dataset)
, &vm.rename_vars, &vm.rename_cnt,
PV_APPEND | PV_NO_DUPLICATE))
goto done;
if (!lex_match ('='))
PV_APPEND | PV_NO_DUPLICATE))
goto done;
if (!lex_match ('='))
@@
-235,7
+239,7
@@
cmd_modify_vars (void)
already_encountered |= 4;
lex_match ('=');
already_encountered |= 4;
lex_match ('=');
- if (!parse_variables (d
efault_dict
, &keep_vars, &keep_cnt, PV_NONE))
+ if (!parse_variables (d
ataset_dict (current_dataset)
, &keep_vars, &keep_cnt, PV_NONE))
goto done;
/* Transform the list of variables to keep into a list of
goto done;
/* Transform the list of variables to keep into a list of
@@
-244,7
+248,7
@@
cmd_modify_vars (void)
sort (keep_vars, keep_cnt, sizeof *keep_vars,
compare_variables_given_ordering, &forward_positional_ordering);
sort (keep_vars, keep_cnt, sizeof *keep_vars,
compare_variables_given_ordering, &forward_positional_ordering);
- dict_get_vars (d
efault_dict
, &all_vars, &all_cnt, 0);
+ dict_get_vars (d
ataset_dict (current_dataset)
, &all_vars, &all_cnt, 0);
assert (all_cnt >= keep_cnt);
drop_cnt = all_cnt - keep_cnt;
assert (all_cnt >= keep_cnt);
drop_cnt = all_cnt - keep_cnt;
@@
-256,7
+260,7
@@
cmd_modify_vars (void)
compare_variables_given_ordering,
&forward_positional_ordering)
!= drop_cnt)
compare_variables_given_ordering,
&forward_positional_ordering)
!= drop_cnt)
-
assert (0
);
+
NOT_REACHED (
);
free (keep_vars);
free (all_vars);
free (keep_vars);
free (all_vars);
@@
-279,14
+283,14
@@
cmd_modify_vars (void)
already_encountered |= 4;
lex_match ('=');
already_encountered |= 4;
lex_match ('=');
- if (!parse_variables (d
efault_dict
, &drop_vars, &drop_cnt, PV_NONE))
+ if (!parse_variables (d
ataset_dict (current_dataset)
, &drop_vars, &drop_cnt, PV_NONE))
goto done;
vm.drop_vars = drop_vars;
vm.drop_cnt = drop_cnt;
}
else if (lex_match_id ("MAP"))
{
goto done;
vm.drop_vars = drop_vars;
vm.drop_cnt = drop_cnt;
}
else if (lex_match_id ("MAP"))
{
- struct dictionary *temp = dict_clone (d
efault_dict
);
+ struct dictionary *temp = dict_clone (d
ataset_dict (current_dataset)
);
int success = rearrange_dict (temp, &vm);
if (success)
{
int success = rearrange_dict (temp, &vm);
if (success)
{
@@
-316,11
+320,11
@@
cmd_modify_vars (void)
if (already_encountered & (1 | 4))
{
/* Read the data. */
if (already_encountered & (1 | 4))
{
/* Read the data. */
- if (!procedure (NULL, NULL))
+ if (!procedure (
current_dataset,
NULL, NULL))
goto done;
}
goto done;
}
- if (!rearrange_dict (d
efault_dict
, &vm))
+ if (!rearrange_dict (d
ataset_dict (current_dataset)
, &vm))
goto done;
ret_code = CMD_SUCCESS;
goto done;
ret_code = CMD_SUCCESS;
@@
-417,7
+421,7
@@
validate_var_modification (const struct dictionary *d,
keep_vars,
compare_variables_given_ordering,
&forward_positional_ordering) != keep_cnt)
keep_vars,
compare_variables_given_ordering,
&forward_positional_ordering) != keep_cnt)
-
assert (0
);
+
NOT_REACHED (
);
/* Copy variables into var_renaming array. */
var_renaming = xnmalloc (keep_cnt, sizeof *var_renaming);
/* Copy variables into var_renaming array. */
var_renaming = xnmalloc (keep_cnt, sizeof *var_renaming);
@@
-462,11
+466,11
@@
validate_var_modification (const struct dictionary *d,
}
/* Reoders, removes, and renames variables in dictionary D
}
/* Reoders, removes, and renames variables in dictionary D
- according to VM. Returns
nonzero if successful, zero
if there
+ according to VM. Returns
true if successful, false
if there
would have been duplicate variable names if the modifications
had been carried out. In the latter case, the dictionary is
not modified. */
would have been duplicate variable names if the modifications
had been carried out. In the latter case, the dictionary is
not modified. */
-static
int
+static
bool
rearrange_dict (struct dictionary *d, const struct var_modification *vm)
{
char **rename_old_names;
rearrange_dict (struct dictionary *d, const struct var_modification *vm)
{
char **rename_old_names;
@@
-480,7
+484,7
@@
rearrange_dict (struct dictionary *d, const struct var_modification *vm)
/* Check whether the modifications will cause duplicate
names. */
if (!validate_var_modification (d, vm))
/* Check whether the modifications will cause duplicate
names. */
if (!validate_var_modification (d, vm))
- return
0
;
+ return
false
;
/* Record the old names of variables to rename. After
variables are deleted, we can't depend on the variables to
/* Record the old names of variables to rename. After
variables are deleted, we can't depend on the variables to
@@
-511,7
+515,7
@@
rearrange_dict (struct dictionary *d, const struct var_modification *vm)
/* Do renaming. */
if (dict_rename_vars (d, rename_vars, rename_new_names, rename_cnt,
NULL) == 0)
/* Do renaming. */
if (dict_rename_vars (d, rename_vars, rename_new_names, rename_cnt,
NULL) == 0)
-
assert (0
);
+
NOT_REACHED (
);
/* Clean up. */
for (i = 0; i < vm->rename_cnt; i++)
/* Clean up. */
for (i = 0; i < vm->rename_cnt; i++)
@@
-520,5
+524,5
@@
rearrange_dict (struct dictionary *d, const struct var_modification *vm)
free (rename_vars);
free (rename_new_names);
free (rename_vars);
free (rename_new_names);
- return
1
;
+ return
true
;
}
}