Move global initialization and cleanup code into main.c.
[pspp-builds.git] / src / vars-atr.c
index 5e34cb5946aa410aca09a922a1642ebea90d1e09..160894b4f9fd6d4197788ad8e7226a26152f697a 100644 (file)
 #include "error.h"
 #include <stdlib.h>
 #include "alloc.h"
-#include "command.h"
 #include "dictionary.h"
-#include "do-ifP.h"
-#include "expressions/public.h"
-#include "file-handle.h"
 #include "hash.h"
-#include "lexer.h"
+#include "lex-def.h"
 #include "misc.h"
 #include "str.h"
 #include "value-labels.h"
-#include "vfm.h"
 
 #include "gettext.h"
 #define _(msgid) gettext (msgid)
 
-#include "debug-print.h"
+/* Returns an adjective describing the given variable TYPE,
+   suitable for use in phrases like "numeric variable". */
+const char *
+var_type_adj (enum var_type type) 
+{
+  return type == NUMERIC ? _("numeric") : _("string");
+}
+
+/* Returns a noun describing a value of the given variable TYPE,
+   suitable for use in phrases like "a number". */
+const char *
+var_type_noun (enum var_type type) 
+{
+  return type == NUMERIC ? _("number") : _("string");
+}
 
 /* Assign auxiliary data AUX to variable V, which must not
    already have auxiliary data.  Before V's auxiliary data is
@@ -114,33 +123,6 @@ hash_value(const union value  *v, int width)
 
 
 
-/* Discards all the current state in preparation for a data-input
-   command like DATA LIST or GET. */
-void
-discard_variables (void)
-{
-  dict_clear (default_dict);
-  default_handle = NULL;
-
-  n_lag = 0;
-  
-  if (vfm_source != NULL)
-    {
-      free_case_source (vfm_source);
-      vfm_source = NULL;
-    }
-
-  cancel_transformations ();
-
-  ctl_stack = NULL;
-
-  expr_free (process_if_expr);
-  process_if_expr = NULL;
-
-  cancel_temporary ();
-
-  pgm_state = STATE_INIT;
-}
 \f
 /* Returns true if NAME is an acceptable name for a variable,
    false otherwise.  If ISSUE_ERROR is true, issues an
@@ -298,3 +280,40 @@ var_set_short_name_suffix (struct variable *v, const char *base, int suffix)
     ofs = strlen (v->short_name);
   strcpy (v->short_name + ofs, start);
 }
+
+
+/* Returns the dictionary class corresponding to a variable named
+   NAME. */
+enum dict_class
+dict_class_from_id (const char *name) 
+{
+  assert (name != NULL);
+
+  switch (name[0]) 
+    {
+    default:
+      return DC_ORDINARY;
+    case '$':
+      return DC_SYSTEM;
+    case '#':
+      return DC_SCRATCH;
+    }
+}
+
+/* Returns the name of dictionary class DICT_CLASS. */
+const char *
+dict_class_to_name (enum dict_class dict_class) 
+{
+  switch (dict_class) 
+    {
+    case DC_ORDINARY:
+      return _("ordinary");
+    case DC_SYSTEM:
+      return _("system");
+    case DC_SCRATCH:
+      return _("scratch");
+    default:
+      assert (0);
+      abort ();
+    }
+}