Actually implement the new procedure code and adapt all of its clients
[pspp-builds.git] / src / language / expressions / evaluate.c
index 5395384a8197c5be1c2276787bddc3c9f975e488..05b19ff121297e49ef39f0eb7745c7e1f7754b27 100644 (file)
@@ -1,6 +1,5 @@
 /* PSPP - computes sample statistics.
-   Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
-   Written by Ben Pfaff <blp@gnu.org>.
+   Copyright (C) 1997-9, 2000, 2006, 2007 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
@@ -156,13 +155,13 @@ cmd_debug_evaluate (struct lexer *lexer, struct dataset *dsother UNUSED)
               lex_error (lexer, _("expecting number or string"));
               goto done;
             }
-         
-         if  ( ds == NULL ) 
+
+         if  ( ds == NULL )
            {
-             ds = create_dataset ();
+             ds = create_dataset (NULL, NULL);
              d = dataset_dict (ds);
            }
-          
+
           old_value_cnt = dict_get_next_value_idx (d);
           v = dict_create_var (d, name, width);
           if (v == NULL)
@@ -177,13 +176,13 @@ cmd_debug_evaluate (struct lexer *lexer, struct dataset *dsother UNUSED)
               case_create (c, dict_get_next_value_idx (d));
             }
           else
-            case_resize (c, old_value_cnt, dict_get_next_value_idx (d));
+            case_resize (c, dict_get_next_value_idx (d));
 
           if (lex_is_number (lexer))
-            case_data_rw (c, v->fv)->f = lex_tokval (lexer);
+            case_data_rw (c, v)->f = lex_tokval (lexer);
           else
-            memcpy (case_data_rw (c, v->fv)->s, ds_data (lex_tokstr (lexer)),
-                    v->width);
+            memcpy (case_data_rw (c, v)->s, ds_data (lex_tokstr (lexer)),
+                    var_get_width (v));
           lex_get (lexer);
 
           if (!lex_force_match (lexer, ')'))
@@ -200,7 +199,7 @@ cmd_debug_evaluate (struct lexer *lexer, struct dataset *dsother UNUSED)
 
   if ( ds != NULL ) 
     fprintf(stderr, "; ");
-  fprintf (stderr, "%s => ", lex_rest_of_line (lexer, NULL));
+  fprintf (stderr, "%s => ", lex_rest_of_line (lexer));
   lex_get (lexer);
 
   expr = expr_parse_any (lexer, ds, optimize);
@@ -309,10 +308,10 @@ expr_debug_print_postfix (const struct expression *e)
           }
           break;
         case OP_variable:
-          fprintf (stderr, "v<%s>", op->variable->name);
+          fprintf (stderr, "v<%s>", var_get_name (op->variable));
           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);