Add aux data parameter to q2c parse_<command>() and custom parser
authorBen Pfaff <blp@gnu.org>
Wed, 28 Jun 2006 02:21:28 +0000 (02:21 +0000)
committerBen Pfaff <blp@gnu.org>
Wed, 28 Jun 2006 02:21:28 +0000 (02:21 +0000)
functions.

14 files changed:
src/language/data-io/file-handle.q
src/language/data-io/list.q
src/language/lexer/ChangeLog
src/language/lexer/q2c.c
src/language/stats/correlations.q
src/language/stats/crosstabs.q
src/language/stats/examine.q
src/language/stats/frequencies.q
src/language/stats/means.q
src/language/stats/oneway.q
src/language/stats/rank.q
src/language/stats/regression.q
src/language/stats/t-test.q
src/language/utilities/set.q

index 5e5ddbadd3c2773bcbdd9018f35834d8205a6522..b3110ac854d271437bf2ae4179958671da1f5ab7 100644 (file)
@@ -75,7 +75,7 @@ cmd_file_handle (void)
   if (!lex_force_match ('/'))
     return CMD_CASCADING_FAILURE;
 
-  if (!parse_file_handle (&cmd))
+  if (!parse_file_handle (&cmd, NULL))
     return CMD_CASCADING_FAILURE;
 
   if (lex_end_of_command () != CMD_SUCCESS)
index e377cb41c96a944974252f74c52703b2d0e069bf..cd5de5c33089a44678cbb29910e27e2358f68d89 100644 (file)
@@ -134,7 +134,7 @@ cmd_list (void)
   struct variable casenum_var;
   bool ok;
 
-  if (!parse_list (&cmd))
+  if (!parse_list (&cmd, NULL))
     return CMD_FAILURE;
   
   /* Fill in defaults. */
index 99b6e3e4cfa95b3b31ed50ec030d31805709993a..3d5768b61058660f74da1843ad877d312ac91e45 100644 (file)
@@ -1,3 +1,16 @@
+Tue Jun 27 19:15:33 2006  Ben Pfaff  <blp@gnu.org>
+
+       Add auxiliary data pointer to q2c parse_<command> function, and
+       pass it along to the custom parser functions.
+
+       Updated all uses of custom functions in all the existing .q files.
+       
+       * q2c.c (dump_declarations): Include auxiliary parameter in
+       function prototypes.
+       (dump_subcommand) Include aux arg in calls to custom functions.
+       (dump_parser) Include aux param in parse_<command> function
+       definition.  Include aux arg in calls to custom functions.
+
 Tue Jun 27 12:07:34 2006  Ben Pfaff  <blp@gnu.org>
 
        * variable-parser.h: New header.  Moved the var_set and variable
index d66dcc01ca00e602331565926e94d83fbf56315e..a62cf9171b30442fdc5adb4ebe2d075a76425b24 100644 (file)
@@ -1177,7 +1177,7 @@ dump_declarations (void)
              dump (0, "/* Prototype for custom subcommands of %s. */",
                    cmdname);
            }
-         dump (0, "static int %scustom_%s (struct cmd_%s *);",
+         dump (0, "static int %scustom_%s (struct cmd_%s *, void *);",
                st_lower (prefix), st_lower (sbc->name),
                make_identifier (cmdname));
        }
@@ -1189,7 +1189,7 @@ dump_declarations (void)
   /* Prototypes for parsing and freeing functions. */
   {
     dump (0, "/* Command parsing functions. */");
-    dump (0, "static int parse_%s (struct cmd_%s *);",
+    dump (0, "static int parse_%s (struct cmd_%s *, void *);",
          make_identifier (cmdname), make_identifier (cmdname));
     dump (0, "static void free_%s (struct cmd_%s *);",
          make_identifier (cmdname), make_identifier (cmdname));
@@ -1696,7 +1696,7 @@ dump_subcommand (const subcommand *sbc)
     }
   else if (sbc->type == SBC_CUSTOM)
     {
-      dump (1, "switch (%scustom_%s (p))",
+      dump (1, "switch (%scustom_%s (p, aux))",
            st_lower (prefix), st_lower (sbc->name));
       dump (0, "{");
       dump (1, "case 0:");
@@ -1725,7 +1725,8 @@ dump_parser (int persistent)
   indent = 0;
 
   dump (0, "static int");
-  dump (0, "parse_%s (struct cmd_%s *p)", make_identifier (cmdname),
+  dump (0, "parse_%s (struct cmd_%s *p, void *aux UNUSED)",
+        make_identifier (cmdname),
        make_identifier (cmdname));
   dump (1, "{");
 
@@ -1761,7 +1762,7 @@ dump_parser (int persistent)
     }
   else if (def && def->type == SBC_CUSTOM)
     {
-      dump (1, "switch (%scustom_%s (p))",
+      dump (1, "switch (%scustom_%s (p, aux))",
            st_lower (prefix), st_lower (def->name));
       dump (0, "{");
       dump (1, "case 0:");
index f998e1df1a16a1feb1694b2d3f156ec4d0a6979f..5ba91e5cd2a2cf98d82f9969716180ebdc4b4152 100644 (file)
@@ -78,7 +78,7 @@ internal_cmd_correlations (void)
   cor_list = cor_last = NULL;
   matrix_file = NULL;
 
-  if (!parse_correlations (&cmd))
+  if (!parse_correlations (&cmd, NULL))
     return CMD_FAILURE;
   free_correlations (&cmd);
 
@@ -86,7 +86,7 @@ internal_cmd_correlations (void)
 }
 
 static int
-cor_custom_variables (struct cmd_correlations *cmd UNUSED)
+cor_custom_variables (struct cmd_correlations *cmd UNUSED, void *aux UNUSED)
 {
   struct variable **v1, **v2;
   size_t nv1, nv2;
@@ -133,7 +133,7 @@ cor_custom_variables (struct cmd_correlations *cmd UNUSED)
 }
 
 static int
-cor_custom_matrix (struct cmd_correlations *cmd UNUSED)
+cor_custom_matrix (struct cmd_correlations *cmd UNUSED, void *aux UNUSED)
 {
   if (!lex_force_match ('('))
     return 0;
index c821ce0ad6484e477b162979e628f346059e1ac1..23b12a9d8af184a3f18091725e33c2959fc9d250 100644 (file)
@@ -211,7 +211,7 @@ internal_cmd_crosstabs (void)
   pl_tc = pool_create ();
   pl_col = pool_create ();
 
-  if (!parse_crosstabs (&cmd))
+  if (!parse_crosstabs (&cmd, NULL))
     return CMD_FAILURE;
 
   mode = variables ? INTEGER : GENERAL;
@@ -301,7 +301,7 @@ internal_cmd_crosstabs (void)
 
 /* Parses the TABLES subcommand. */
 static int
-crs_custom_tables (struct cmd_crosstabs *cmd UNUSED)
+crs_custom_tables (struct cmd_crosstabs *cmd UNUSED, void *aux UNUSED)
 {
   struct var_set *var_set;
   int n_by;
@@ -405,7 +405,7 @@ crs_custom_tables (struct cmd_crosstabs *cmd UNUSED)
 
 /* Parses the VARIABLES subcommand. */
 static int
-crs_custom_variables (struct cmd_crosstabs *cmd UNUSED)
+crs_custom_variables (struct cmd_crosstabs *cmd UNUSED, void *aux UNUSED)
 {
   if (nxtab)
     {
index e2bd897a5200f20838959727368e74c691cda686..44e7125d29bf1b6846b11b1c1e0ceb607eb71f5a 100644 (file)
@@ -198,7 +198,7 @@ cmd_examine(void)
   subc_list_double_create(&percentile_list);
   percentile_algorithm = PC_HAVERAGE;
 
-  if ( !parse_examine(&cmd) )
+  if ( !parse_examine(&cmd, NULL) )
     return CMD_FAILURE;
 
   /* If /MISSING=INCLUDE is set, then user missing values are ignored */
@@ -423,7 +423,7 @@ list_to_ptile_hash(const subc_list_double *l)
 
 /* Parse the PERCENTILES subcommand */
 static int
-xmn_custom_percentiles(struct cmd_examine *p UNUSED)
+xmn_custom_percentiles(struct cmd_examine *p UNUSED, void *aux UNUSED)
 {
   sbc_percentile = 1;
 
@@ -478,7 +478,7 @@ xmn_custom_percentiles(struct cmd_examine *p UNUSED)
 
 /* TOTAL and NOTOTAL are simple, mutually exclusive flags */
 static int
-xmn_custom_total(struct cmd_examine *p)
+xmn_custom_total(struct cmd_examine *p, void *aux UNUSED)
 {
   if ( p->sbc_nototal ) 
     {
@@ -490,7 +490,7 @@ xmn_custom_total(struct cmd_examine *p)
 }
 
 static int
-xmn_custom_nototal(struct cmd_examine *p)
+xmn_custom_nototal(struct cmd_examine *p, void *aux UNUSED)
 {
   if ( p->sbc_total ) 
     {
@@ -506,7 +506,7 @@ xmn_custom_nototal(struct cmd_examine *p)
 /* Parser for the variables sub command  
    Returns 1 on success */
 static int
-xmn_custom_variables(struct cmd_examine *cmd )
+xmn_custom_variables(struct cmd_examine *cmd, void *aux UNUSED)
 {
   lex_match('=');
 
index 827f02af33342e8e29d2803b1526fc698636f823..95041d5d80aa3fa059e967e811b4f073dccc2f60 100644 (file)
@@ -335,7 +335,7 @@ internal_cmd_frequencies (void)
   n_variables = 0;
   v_variables = NULL;
 
-  if (!parse_frequencies (&cmd))
+  if (!parse_frequencies (&cmd, NULL))
     return CMD_FAILURE;
 
   if (cmd.onepage_limit == NOT_LONG)
@@ -791,7 +791,7 @@ cleanup_freq_tab (struct variable *v)
 /* Parses the VARIABLES subcommand, adding to
    {n_variables,v_variables}. */
 static int
-frq_custom_variables (struct cmd_frequencies *cmd UNUSED)
+frq_custom_variables (struct cmd_frequencies *cmd UNUSED, void *aux UNUSED)
 {
   int mode;
   int min = 0, max = 0;
@@ -879,7 +879,7 @@ frq_custom_variables (struct cmd_frequencies *cmd UNUSED)
 /* Parses the GROUPED subcommand, setting the n_grouped, grouped
    fields of specified variables. */
 static int
-frq_custom_grouped (struct cmd_frequencies *cmd UNUSED)
+frq_custom_grouped (struct cmd_frequencies *cmd UNUSED, void *aux UNUSED)
 {
   lex_match ('=');
   if ((token == T_ID && dict_lookup_var (default_dict, tokid) != NULL)
index a1aa7229ebaa87d0feabe9a27d5cb51df0411bc7..fb03f754518f1ede12c3f42bbc67a99afc14c125 100644 (file)
@@ -72,7 +72,7 @@ cmd_means (void)
   v_dim = NULL;
   v_var = NULL;
 
-  if (!parse_means (&cmd))
+  if (!parse_means (&cmd, NULL))
     goto free;
 
   if (cmd.sbc_cells)
@@ -123,7 +123,7 @@ free:
 
 /* Parses the TABLES subcommand. */
 static int
-mns_custom_tables (struct cmd_means *cmd)
+mns_custom_tables (struct cmd_means *cmd, void *aux UNUSED)
 {
   struct var_set *var_set;
   
index a400c1da6f0f08b54e23cbe98d47973be275e2e2..674cf710f085f4cbbeb2b81f07537921af86e6d7 100644 (file)
@@ -121,7 +121,7 @@ cmd_oneway(void)
   int i;
   bool ok;
 
-  if ( !parse_oneway(&cmd) )
+  if ( !parse_oneway(&cmd, NULL) )
     return CMD_FAILURE;
 
   /* If /MISSING=INCLUDE is set, then user missing values are ignored */
@@ -223,7 +223,7 @@ output_oneway(void)
 
 /* Parser for the variables sub command */
 static int
-oneway_custom_variables(struct cmd_oneway *cmd UNUSED)
+oneway_custom_variables(struct cmd_oneway *cmd UNUSED, void *aux UNUSED)
 {
 
   lex_match('=');
index 2022aaaf460a27123dd1588c9b1293d9cb8eacbf..7024304d0c6f686515be1c8f7508aed4bd58a99e 100644 (file)
@@ -95,7 +95,7 @@ cmd_rank(void)
   size_t i;
   n_rank_specs = 0;
 
-  if ( !parse_rank(&cmd) )
+  if ( !parse_rank(&cmd, NULL) )
     return CMD_FAILURE;
 
 #if 1
@@ -139,7 +139,7 @@ cmd_rank(void)
 /* Parser for the variables sub command  
    Returns 1 on success */
 static int
-rank_custom_variables(struct cmd_rank *cmd UNUSED)
+rank_custom_variables(struct cmd_rank *cmd UNUSED, void *aux UNUSED)
 {
   static const int terminators[2] = {T_BY, 0};
 
@@ -298,50 +298,50 @@ parse_rank_function(struct cmd_rank *cmd UNUSED, enum RANK_FUNC f)
 
 
 static int
-rank_custom_rank(struct cmd_rank *cmd )
+rank_custom_rank(struct cmd_rank *cmd, void *aux UNUSED )
 {
   return parse_rank_function(cmd, RANK);
 }
 
 static int
-rank_custom_normal(struct cmd_rank *cmd )
+rank_custom_normal(struct cmd_rank *cmd, void *aux UNUSED )
 {
   return parse_rank_function(cmd, NORMAL);
 }
 
 static int
-rank_custom_percent(struct cmd_rank *cmd )
+rank_custom_percent(struct cmd_rank *cmd, void *aux UNUSED )
 {
   return parse_rank_function(cmd, NORMAL);
 }
 
 static int
-rank_custom_rfraction(struct cmd_rank *cmd )
+rank_custom_rfraction(struct cmd_rank *cmd, void *aux UNUSED )
 {
   return parse_rank_function(cmd, RFRACTION);
 }
 
 static int
-rank_custom_proportion(struct cmd_rank *cmd )
+rank_custom_proportion(struct cmd_rank *cmd, void *aux UNUSED )
 {
   return parse_rank_function(cmd, PROPORTION);
 }
 
 static int
-rank_custom_n(struct cmd_rank *cmd )
+rank_custom_n(struct cmd_rank *cmd, void *aux UNUSED )
 {
   return parse_rank_function(cmd, N);
 }
 
 static int
-rank_custom_savage(struct cmd_rank *cmd )
+rank_custom_savage(struct cmd_rank *cmd, void *aux UNUSED )
 {
   return parse_rank_function(cmd, SAVAGE);
 }
 
 
 static int
-rank_custom_ntiles(struct cmd_rank *cmd )
+rank_custom_ntiles(struct cmd_rank *cmd, void *aux UNUSED )
 {
   if ( lex_force_match('(') ) 
     {
index 7bb324295beaec3d1e0a3032d50a8e03026c1d94..4078156863f34bcaaa37386a8cf046f2187f9395 100644 (file)
@@ -908,7 +908,7 @@ subcommand_export (int export, pspp_linreg_cache * c)
     }
 }
 static int
-regression_custom_export (struct cmd_regression *cmd UNUSED)
+regression_custom_export (struct cmd_regression *cmd UNUSED, void *aux UNUSED)
 {
   /* 0 on failure, 1 on success, 2 on failure that should result in syntax error */
   if (!lex_force_match ('('))
@@ -932,7 +932,7 @@ regression_custom_export (struct cmd_regression *cmd UNUSED)
 int
 cmd_regression (void)
 {
-  if (!parse_regression (&cmd))
+  if (!parse_regression (&cmd, NULL))
     return CMD_FAILURE;
 
   models = xnmalloc (cmd.n_dependent, sizeof *models);
@@ -996,7 +996,8 @@ mark_missing_cases (const struct casefile *cf, struct variable *v,
 
 /* Parser for the variables sub command */
 static int
-regression_custom_variables (struct cmd_regression *cmd UNUSED)
+regression_custom_variables (struct cmd_regression *cmd UNUSED,
+                             void *aux UNUSED)
 {
 
   lex_match ('=');
index 7685bd829b0a175a0244bcc434574836e14f513f..5584df7d6031cf0eb3367f65f752001402ecb2cb 100644 (file)
@@ -259,7 +259,7 @@ cmd_t_test(void)
 {
   bool ok;
   
-  if ( !parse_t_test(&cmd) )
+  if ( !parse_t_test(&cmd, NULL) )
     return CMD_FAILURE;
 
   if (! cmd.sbc_criteria)
@@ -366,7 +366,7 @@ cmd_t_test(void)
 }
 
 static int
-tts_custom_groups (struct cmd_t_test *cmd UNUSED)
+tts_custom_groups (struct cmd_t_test *cmd UNUSED, void *aux UNUSED)
 {
   int n_group_values=0;
 
@@ -445,7 +445,7 @@ tts_custom_groups (struct cmd_t_test *cmd UNUSED)
 
 
 static int
-tts_custom_pairs (struct cmd_t_test *cmd UNUSED)
+tts_custom_pairs (struct cmd_t_test *cmd UNUSED, void *aux UNUSED)
 {
   struct variable **vars;
   size_t n_vars;
index a230c7d58a035eabea8bb79256d63b2b2a4f6419..b403843a1abe604c9f4d683c10e6cf542db10365 100644 (file)
@@ -122,7 +122,7 @@ cmd_set (void)
   struct cmd_set cmd;
   bool ok = true;
 
-  if (!parse_set (&cmd))
+  if (!parse_set (&cmd, NULL))
     return CMD_FAILURE;
 
   if (cmd.sbc_cca)
@@ -286,7 +286,7 @@ do_cc (const char *cc_string, int idx)
    completely blank fields in numeric data imply.  X, Wnd: Syntax is
    SYSMIS or a numeric value. */
 static int
-stc_custom_blanks (struct cmd_set *cmd UNUSED)
+stc_custom_blanks (struct cmd_set *cmd UNUSED, void *aux UNUSED)
 {
   lex_match ('=');
   if ((token == T_ID && lex_id_match ("SYSMIS", tokid)))
@@ -307,7 +307,7 @@ stc_custom_blanks (struct cmd_set *cmd UNUSED)
 /* Parses the EPOCH subcommand, which controls the epoch used for
    parsing 2-digit years. */
 static int
-stc_custom_epoch (struct cmd_set *cmd UNUSED) 
+stc_custom_epoch (struct cmd_set *cmd UNUSED, void *aux UNUSED
 {
   lex_match ('=');
   if (lex_match_id ("AUTOMATIC"))
@@ -333,7 +333,7 @@ stc_custom_epoch (struct cmd_set *cmd UNUSED)
 }
 
 static int
-stc_custom_length (struct cmd_set *cmd UNUSED)
+stc_custom_length (struct cmd_set *cmd UNUSED, void *aux UNUSED)
 {
   int page_length;
 
@@ -360,7 +360,7 @@ stc_custom_length (struct cmd_set *cmd UNUSED)
 }
 
 static int
-stc_custom_seed (struct cmd_set *cmd UNUSED)
+stc_custom_seed (struct cmd_set *cmd UNUSED, void *aux UNUSED)
 {
   lex_match ('=');
   if (lex_match_id ("RANDOM"))
@@ -377,7 +377,7 @@ stc_custom_seed (struct cmd_set *cmd UNUSED)
 }
 
 static int
-stc_custom_width (struct cmd_set *cmd UNUSED)
+stc_custom_width (struct cmd_set *cmd UNUSED, void *aux UNUSED)
 {
   lex_match ('=');
   if (lex_match_id ("NARROW"))
@@ -403,7 +403,7 @@ stc_custom_width (struct cmd_set *cmd UNUSED)
 /* Parses FORMAT subcommand, which consists of a numeric format
    specifier. */
 static int
-stc_custom_format (struct cmd_set *cmd UNUSED)
+stc_custom_format (struct cmd_set *cmd UNUSED, void *aux UNUSED)
 {
   struct fmt_spec fmt;
 
@@ -423,7 +423,7 @@ stc_custom_format (struct cmd_set *cmd UNUSED)
 }
 
 static int
-stc_custom_journal (struct cmd_set *cmd UNUSED)
+stc_custom_journal (struct cmd_set *cmd UNUSED, void *aux UNUSED)
 {
   lex_match ('=');
   if (!lex_match_id ("ON") && !lex_match_id ("OFF")) 
@@ -440,7 +440,7 @@ stc_custom_journal (struct cmd_set *cmd UNUSED)
 }
 
 static int
-stc_custom_listing (struct cmd_set *cmd UNUSED)
+stc_custom_listing (struct cmd_set *cmd UNUSED, void *aux UNUSED)
 {
   bool listing;
 
@@ -460,9 +460,9 @@ stc_custom_listing (struct cmd_set *cmd UNUSED)
 }
 
 static int
-stc_custom_disk (struct cmd_set *cmd UNUSED)
+stc_custom_disk (struct cmd_set *cmd UNUSED, void *aux)
 {
-  return stc_custom_listing (cmd);
+  return stc_custom_listing (cmd, aux);
 }
 \f
 static void