#include "language/lexer/variable-parser.h"
#include "libpspp/assertion.h"
#include "libpspp/i18n.h"
+#include "libpspp/intern.h"
#include "libpspp/message.h"
#include "libpspp/str.h"
int line_number = dfm_get_line_number (reader);
struct msg_location *location = xmalloc (sizeof *location);
+ int last_column = (first_column && token->length
+ ? first_column + token->length - 1
+ : 0);
*location = (struct msg_location) {
- .file_name = xstrdup (dfm_get_file_name (reader)),
- .first_line = line_number,
- .last_line = line_number + 1,
- .first_column = first_column,
- .last_column = first_column ? first_column + token->length : 0,
+ .file_name = intern_new (dfm_get_file_name (reader)),
+ .start = { .line = line_number, .column = first_column },
+ .end = { .line = line_number, .column = last_column },
};
struct msg *m = xmalloc (sizeof *m);
*m = (struct msg) {
if (!strcasecmp (names[i], "ROWTYPE_"))
dict_create_var_assert (dict, "ROWTYPE_", 8);
else
- dict_create_var_assert (dict, names[i], 0);
+ {
+ struct variable *var = dict_create_var_assert (dict, names[i], 0);
+ var_set_measure (var, MEASURE_SCALE);
+ }
for (size_t i = 0; i < n_names; ++i)
free (names[i]);
}
*tv = true;
+ var_set_measure (v, MEASURE_NOMINAL);
var_set_both_formats (v, &(struct fmt_spec) { .type = FMT_F, .w = 4 });
}
return true;
if (!dict)
return CMD_FAILURE;
- size_t n_input_vars = dict_get_var_cnt (dict);
+ size_t n_input_vars = dict_get_n_vars (dict);
struct variable **input_vars = xnmalloc (n_input_vars, sizeof *input_vars);
for (size_t i = 0; i < n_input_vars; i++)
input_vars[i] = dict_get_var (dict, i);
mf.svars = xmalloc (sizeof *mf.svars);
mf.svars[0] = dict_create_var_assert (dict, lex_tokcstr (lexer),
0);
+ var_set_measure (mf.svars[0], MEASURE_NOMINAL);
var_set_both_formats (
mf.svars[0], &(struct fmt_spec) { .type = FMT_F, .w = 4 });
mf.n_svars = 1;
goto error;
}
- struct variable **order = xnmalloc (dict_get_var_cnt (dict), sizeof *order);
+ struct variable **order = xnmalloc (dict_get_n_vars (dict), sizeof *order);
size_t n_order = 0;
for (size_t i = 0; i < mf.n_svars; i++)
order[n_order++] = mf.svars[i];
order[n_order++] = mf.varname;
for (size_t i = 0; i < mf.n_cvars; i++)
order[n_order++] = mf.cvars[i];
- assert (n_order == dict_get_var_cnt (dict));
+ assert (n_order == dict_get_n_vars (dict));
dict_reorder_vars (dict, order, n_order);
free (order);
- dict_set_split_vars (dict, mf.svars, mf.n_svars);
+ dict_set_split_vars (dict, mf.svars, mf.n_svars, SPLIT_LAYERED);
schedule_matrices (&mf);