projects
/
pspp-builds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Applied patch #5653, which adds callbacks to dataset whenever its dictionary or
[pspp-builds.git]
/
src
/
language
/
expressions
/
evaluate.c
diff --git
a/src/language/expressions/evaluate.c
b/src/language/expressions/evaluate.c
index c38075410cb6c3733b079e237a7ec4efcfb373e0..2498b0945528c26bff216e5b2a6c50c91981e715 100644
(file)
--- a/
src/language/expressions/evaluate.c
+++ b/
src/language/expressions/evaluate.c
@@
-1,6
+1,5
@@
/* PSPP - computes sample statistics.
Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
/* PSPP - computes sample statistics.
Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
- Written by Ben Pfaff <blp@gnu.org>.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@@
-90,8
+89,6
@@
expr_evaluate_num (struct expression *e, const struct ccase *c, int case_idx)
return d;
}
return d;
}
-
-
void
expr_evaluate_str (struct expression *e, const struct ccase *c, int case_idx,
char *dst, size_t dst_size)
void
expr_evaluate_str (struct expression *e, const struct ccase *c, int case_idx,
char *dst, size_t dst_size)
@@
-109,7
+106,7
@@
expr_evaluate_str (struct expression *e, const struct ccase *c, int case_idx,
#include <language/command.h>
int
#include <language/command.h>
int
-cmd_debug_evaluate (struct dataset *dsother UNUSED)
+cmd_debug_evaluate (struct
lexer *lexer, struct
dataset *dsother UNUSED)
{
bool optimize = true;
int retval = CMD_FAILURE;
{
bool optimize = true;
int retval = CMD_FAILURE;
@@
-124,47
+121,47
@@
cmd_debug_evaluate (struct dataset *dsother UNUSED)
for (;;)
{
struct dictionary *d = NULL;
for (;;)
{
struct dictionary *d = NULL;
- if (lex_match_id ("NOOPTIMIZE"))
+ if (lex_match_id (
lexer,
"NOOPTIMIZE"))
optimize = 0;
optimize = 0;
- else if (lex_match_id ("POSTFIX"))
+ else if (lex_match_id (
lexer,
"POSTFIX"))
dump_postfix = 1;
dump_postfix = 1;
- else if (lex_match ('('))
+ else if (lex_match (
lexer,
'('))
{
char name[LONG_NAME_LEN + 1];
struct variable *v;
size_t old_value_cnt;
int width;
{
char name[LONG_NAME_LEN + 1];
struct variable *v;
size_t old_value_cnt;
int width;
- if (!lex_force_id ())
+ if (!lex_force_id (
lexer
))
goto done;
goto done;
- strcpy (name,
tokid
);
+ strcpy (name,
lex_tokid (lexer)
);
- lex_get ();
- if (!lex_force_match ('='))
+ lex_get (
lexer
);
+ if (!lex_force_match (
lexer,
'='))
goto done;
goto done;
- if (lex_is_number ())
+ if (lex_is_number (
lexer
))
{
width = 0;
{
width = 0;
- fprintf (stderr, "(%s = %.2f)", name,
tokval
);
+ fprintf (stderr, "(%s = %.2f)", name,
lex_tokval (lexer)
);
}
}
- else if (
token
== T_STRING)
+ else if (
lex_token (lexer)
== T_STRING)
{
{
- width = ds_length (
&tokstr
);
- fprintf (stderr, "(%s = \"%.2s\")", name, ds_cstr (
&tokstr
));
+ width = ds_length (
lex_tokstr (lexer)
);
+ fprintf (stderr, "(%s = \"%.2s\")", name, ds_cstr (
lex_tokstr (lexer)
));
}
else
{
}
else
{
- lex_error (_("expecting number or string"));
+ lex_error (
lexer,
_("expecting number or string"));
goto done;
}
goto done;
}
-
- if ( ds == NULL )
+
+ if ( ds == NULL )
{
{
- ds = create_dataset ();
+ ds = create_dataset (
NULL, NULL, NULL
);
d = dataset_dict (ds);
}
d = dataset_dict (ds);
}
-
+
old_value_cnt = dict_get_next_value_idx (d);
v = dict_create_var (d, name, width);
if (v == NULL)
old_value_cnt = dict_get_next_value_idx (d);
v = dict_create_var (d, name, width);
if (v == NULL)
@@
-181,32
+178,32
@@
cmd_debug_evaluate (struct dataset *dsother UNUSED)
else
case_resize (c, old_value_cnt, dict_get_next_value_idx (d));
else
case_resize (c, old_value_cnt, dict_get_next_value_idx (d));
- if (lex_is_number ())
- case_data_rw (c, v
->fv)->f = tokval
;
+ if (lex_is_number (
lexer
))
+ case_data_rw (c, v
)->f = lex_tokval (lexer)
;
else
else
- memcpy (case_data_rw (c, v
->fv)->s, ds_data (&tokstr
),
- v
->width
);
- lex_get ();
+ memcpy (case_data_rw (c, v
)->s, ds_data (lex_tokstr (lexer)
),
+ v
ar_get_width (v)
);
+ lex_get (
lexer
);
- if (!lex_force_match (')'))
+ if (!lex_force_match (
lexer,
')'))
goto done;
}
else
break;
}
goto done;
}
else
break;
}
- if (
token
!= '/')
+ if (
lex_token (lexer)
!= '/')
{
{
- lex_force_match ('/');
+ lex_force_match (
lexer,
'/');
goto done;
}
if ( ds != NULL )
fprintf(stderr, "; ");
goto done;
}
if ( ds != NULL )
fprintf(stderr, "; ");
- fprintf (stderr, "%s => ", lex_rest_of_line (NULL));
- lex_get ();
+ fprintf (stderr, "%s => ", lex_rest_of_line (
lexer,
NULL));
+ lex_get (
lexer
);
- expr = expr_parse_any (ds, optimize);
- if (!expr || lex_end_of_command () != CMD_SUCCESS)
+ expr = expr_parse_any (
lexer,
ds, optimize);
+ if (!expr || lex_end_of_command (
lexer
) != CMD_SUCCESS)
{
if (expr != NULL)
expr_free (expr);
{
if (expr != NULL)
expr_free (expr);
@@
-311,10
+308,10
@@
expr_debug_print_postfix (const struct expression *e)
}
break;
case OP_variable:
}
break;
case OP_variable:
- fprintf (stderr, "v<%s>",
op->variable->name
);
+ fprintf (stderr, "v<%s>",
var_get_name (op->variable)
);
break;
case OP_vector:
break;
case OP_vector:
- fprintf (stderr, "vec<%s>",
op->vector->name
);
+ fprintf (stderr, "vec<%s>",
vector_get_name (op->vector)
);
break;
case OP_integer:
fprintf (stderr, "i<%d>", op->integer);
break;
case OP_integer:
fprintf (stderr, "i<%d>", op->integer);