Subcommand to export a model as a C function
[pspp-builds.git] / src / examine.q
index 562defe7b403ca7663722cb70b1394d50584bbb5..fc0c0c9a94f8752aee67aeeded7b8b68553daa15 100644 (file)
@@ -44,6 +44,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 #include "moments.h"
 #include "percentiles.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
 /* (headers) */
 #include "chart.h"
 
@@ -73,7 +77,7 @@ static struct cmd_examine cmd;
 
 static struct variable **dependent_vars;
 
-static int n_dependent_vars;
+static size_t n_dependent_vars;
 
 
 struct factor 
@@ -165,7 +169,7 @@ const char *factor_to_string_concise(const struct factor *fctr,
 
 
 /* Function to use for testing for missing values */
-static is_missing_func value_is_missing;
+static is_missing_func *value_is_missing;
 
 
 /* PERCENTILES */
@@ -189,9 +193,9 @@ cmd_examine(void)
 
   /* If /MISSING=INCLUDE is set, then user missing values are ignored */
   if (cmd.incl == XMN_INCLUDE ) 
-    value_is_missing = is_system_missing;
+    value_is_missing = mv_is_value_system_missing;
   else
-    value_is_missing = is_missing;
+    value_is_missing = mv_is_value_missing;
 
   if ( cmd.st_n == SYSMIS ) 
     cmd.st_n = 5;
@@ -324,7 +328,7 @@ output_examine(void)
 
       if ( cmd.sbc_plot) 
        {
-         int v;
+         size_t v;
 
          struct factor_statistics **fs = fctr->fs ;
 
@@ -390,7 +394,7 @@ list_to_ptile_hash(const subc_list_double *l)
 
   for ( i = 0 ; i < subc_list_double_count(l) ; ++i )
     {
-      struct percentile *p = xmalloc (sizeof (struct percentile));
+      struct percentile *p = xmalloc (sizeof *p);
       
       p->p = subc_list_double_at(l,i);
       p->v = SYSMIS;
@@ -507,7 +511,7 @@ xmn_custom_variables(struct cmd_examine *cmd )
 
   assert(n_dependent_vars);
 
-  totals = xmalloc( sizeof(struct metrics) * n_dependent_vars);
+  totals = xnmalloc (n_dependent_vars, sizeof *totals);
 
   if ( lex_match(T_BY))
     {
@@ -530,7 +534,7 @@ static int
 examine_parse_independent_vars(struct cmd_examine *cmd)
 {
   int success;
-  struct factor *sf = xmalloc(sizeof(struct factor));
+  struct factor *sf = xmalloc (sizeof *sf);
 
   if ((token != T_ID || dict_lookup_var (default_dict, tokid) == NULL)
       && token != T_ALL)
@@ -607,7 +611,7 @@ static int bad_weight_warn = 1;
 void
 factor_calc(struct ccase *c, int case_no, double weight, int case_missing)
 {
-  int v;
+  size_t v;
   struct factor *fctr = factors;
 
   while ( fctr) 
@@ -646,7 +650,7 @@ factor_calc(struct ccase *c, int case_no, double weight, int case_missing)
          const struct variable *var = dependent_vars[v];
          const union value *val = case_data (c, var->fv);
 
-         if ( value_is_missing(val,var) || case_missing ) 
+         if ( value_is_missing (&var->miss, val) || case_missing ) 
            val = 0;
          
          metrics_calc( &(*foo)->m[v], val, weight, case_no);
@@ -708,7 +712,7 @@ run_examine(const struct casefile *cf, void *cmd_ )
              const struct variable *var = dependent_vars[v];
              const union value *val = case_data (&c, var->fv);
 
-             if ( value_is_missing(val,var))
+             if ( value_is_missing(&var->miss, val))
                case_missing = 1;
                   
            }
@@ -719,7 +723,7 @@ run_examine(const struct casefile *cf, void *cmd_ )
          const struct variable *var = dependent_vars[v];
          const union value *val = case_data (&c, var->fv);
 
-         if ( value_is_missing(val,var) || case_missing ) 
+         if ( value_is_missing(&var->miss, val) || case_missing ) 
            val = 0;
 
          metrics_calc(&totals[v], val, weight, case_no);
@@ -808,7 +812,7 @@ run_examine(const struct casefile *cf, void *cmd_ )
                hsh_probe(fctr->fstats, (void *) &key );
 
              if ( !*ffs ) {
-               int i;
+               size_t i;
                (*ffs) = create_factor_statistics (n_dependent_vars,
                                                   &key[0], &key[1]);
                for ( i = 0 ; i < n_dependent_vars ; ++i ) 
@@ -830,7 +834,7 @@ run_examine(const struct casefile *cf, void *cmd_ )
 
   if ( totals ) 
     {
-      int i;
+      size_t i;
       for ( i = 0 ; i < n_dependent_vars ; ++i ) 
        {
          metrics_destroy(&totals[i]);
@@ -1854,7 +1858,7 @@ np_plot(const struct metrics *m, const char *factorname)
   {
     /* We have to cache the detrended data, beacause we need to 
        find its limits before we can plot it */
-    double *d_data = xmalloc (m->n_data * sizeof(double));
+    double *d_data = xnmalloc (m->n_data, sizeof *d_data);
     double d_max = -DBL_MAX;
     double d_min = DBL_MAX;
     for ( i = 0 ; i < m->n_data; ++i )