Encapsulated the static data of procedure.[ch] into a single object, to be
[pspp-builds.git] / src / language / data-io / inpt-pgm.c
index 51c369810f9d2872810a00341a0623321f4f04c8..668ede87390173320c51eb2f3963d83292fc7de6 100644 (file)
@@ -37,6 +37,7 @@
 #include <language/expressions/public.h>
 #include <language/lexer/lexer.h>
 #include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
 #include <libpspp/compiler.h>
 #include <libpspp/message.h>
 #include <libpspp/message.h>
@@ -98,7 +99,7 @@ in_input_program (void)
 static void
 emit_END_CASE (struct input_program_pgm *inp) 
 {
-  add_transformation (end_case_trns_proc, NULL, inp);
+  add_transformation (current_dataset, end_case_trns_proc, NULL, inp);
 }
 
 int
@@ -108,7 +109,7 @@ cmd_input_program (void)
   size_t i;
   bool saw_END_CASE = false;
 
-  discard_variables ();
+  discard_variables (current_dataset);
   if (token != '.')
     return lex_end_of_command ();
 
@@ -119,9 +120,7 @@ cmd_input_program (void)
   inside_input_program = true;
   for (;;) 
     {
-      enum cmd_result result;
-      lex_get ();
-      result = cmd_parse (CMD_STATE_INPUT_PROGRAM);
+      enum cmd_result result = cmd_parse (CMD_STATE_INPUT_PROGRAM);
       if (result == CMD_END_INPUT_PROGRAM)
         break;
       else if (result == CMD_END_CASE) 
@@ -134,7 +133,7 @@ cmd_input_program (void)
           if (result == CMD_EOF)
             msg (SE, _("Unexpected end-of-file within INPUT PROGRAM."));
           inside_input_program = false;
-          discard_variables ();
+          discard_variables (current_dataset);
           destroy_input_program (inp);
           return result;
         }
@@ -143,25 +142,25 @@ cmd_input_program (void)
     emit_END_CASE (inp);
   inside_input_program = false;
 
-  if (dict_get_next_value_idx (default_dict) == 0) 
+  if (dict_get_next_value_idx (dataset_dict (current_dataset)) == 0) 
     {
       msg (SE, _("Input program did not create any variables."));
-      discard_variables ();
+      discard_variables (current_dataset);
       destroy_input_program (inp);
       return CMD_FAILURE;
     }
   
-  inp->trns_chain = proc_capture_transformations ();
+  inp->trns_chain = proc_capture_transformations (current_dataset);
   trns_chain_finalize (inp->trns_chain);
 
   /* Figure out how to initialize each input case. */
-  inp->init_cnt = dict_get_next_value_idx (default_dict);
+  inp->init_cnt = dict_get_next_value_idx (dataset_dict (current_dataset));
   inp->init = xnmalloc (inp->init_cnt, sizeof *inp->init);
   for (i = 0; i < inp->init_cnt; i++)
     inp->init[i] = -1;
-  for (i = 0; i < dict_get_var_cnt (default_dict); i++)
+  for (i = 0; i < dict_get_var_cnt (dataset_dict (current_dataset)); i++)
     {
-      struct variable *var = dict_get_var (default_dict, i);
+      struct variable *var = dict_get_var (dataset_dict (current_dataset), i);
       enum value_init_type value_init;
       size_t j;
       
@@ -173,9 +172,10 @@ cmd_input_program (void)
     }
   for (i = 0; i < inp->init_cnt; i++)
     assert (inp->init[i] != -1);
-  inp->case_size = dict_get_case_size (default_dict);
+  inp->case_size = dict_get_case_size (dataset_dict (current_dataset));
 
-  proc_set_source (create_case_source (&input_program_source_class, inp));
+  proc_set_source (current_dataset, 
+                 create_case_source (&input_program_source_class, inp));
 
   return CMD_SUCCESS;
 }
@@ -207,7 +207,7 @@ init_case (const struct input_program_pgm *inp, struct ccase *c)
         memset (case_data_rw (c, i)->s, ' ', sizeof case_data_rw (c, i)->s);
         break;
       default:
-        assert (0);
+        NOT_REACHED ();
       }
 }
 
@@ -231,7 +231,7 @@ clear_case (const struct input_program_pgm *inp, struct ccase *c)
         memset (case_data_rw (c, i)->s, ' ', sizeof case_data_rw (c, i)->s);
         break;
       default:
-        assert (0);
+        NOT_REACHED ();
       }
 }
 
@@ -298,7 +298,7 @@ cmd_end_case (void)
 
 /* Sends the current case as the source's output. */
 int
-end_case_trns_proc (void *inp_, struct ccase *c, int case_nr UNUSED)
+end_case_trns_proc (void *inp_, struct ccase *c, casenum_t case_nr UNUSED)
 {
   struct input_program_pgm *inp = inp_;
 
@@ -340,7 +340,7 @@ cmd_reread (void)
              return CMD_CASCADING_FAILURE;
            }
          
-         e = expr_parse (default_dict, EXPR_NUMBER);
+         e = expr_parse (dataset_dict (current_dataset), EXPR_NUMBER);
          if (!e)
            return CMD_CASCADING_FAILURE;
        }
@@ -353,7 +353,6 @@ cmd_reread (void)
              expr_free (e);
              return CMD_CASCADING_FAILURE;
            }
-         lex_get ();
        }
       else
        {
@@ -365,14 +364,14 @@ cmd_reread (void)
   t = xmalloc (sizeof *t);
   t->reader = dfm_open_reader (fh);
   t->column = e;
-  add_transformation (reread_trns_proc, reread_trns_free, t);
+  add_transformation (current_dataset, reread_trns_proc, reread_trns_free, t);
 
   return CMD_SUCCESS;
 }
 
 /* Executes a REREAD transformation. */
 static int
-reread_trns_proc (void *t_, struct ccase *c, int case_num)
+reread_trns_proc (void *t_, struct ccase *c, casenum_t case_num)
 {
   struct reread_trns *t = t_;
 
@@ -410,7 +409,7 @@ cmd_end_file (void)
 {
   assert (in_input_program ());
 
-  add_transformation (end_file_trns_proc, NULL, NULL);
+  add_transformation (current_dataset, end_file_trns_proc, NULL, NULL);
 
   return lex_end_of_command ();
 }
@@ -418,7 +417,7 @@ cmd_end_file (void)
 /* Executes an END FILE transformation. */
 static int
 end_file_trns_proc (void *trns_ UNUSED, struct ccase *c UNUSED,
-                    int case_num UNUSED)
+                    casenum_t case_num UNUSED)
 {
   return TRNS_END_FILE;
 }