New function: var_create_internal.
authorJohn Darrington <jmd@pc-188.(none)>
Sat, 13 Sep 2008 00:37:08 +0000 (08:37 +0800)
committerJohn Darrington <jmd@pc-188.(none)>
Sat, 13 Sep 2008 00:37:08 +0000 (08:37 +0800)
Added a new function for creating "internal" variables.
Ie, those which don't appear in any dictionary, and
are for the purposes of internal calculations.

po/en_GB.po
src/data/variable.c
src/data/variable.h

index 4cef93ae9a42df38d9075f09493679957635f7ee..b6911c934b81ea29e2ae2178088dc30fdb71ca16 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PSPP 0.4.3\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2008-09-13 07:24+0800\n"
+"POT-Creation-Date: 2008-09-13 08:26+0800\n"
 "PO-Revision-Date: 2007-09-15 08:29+0800\n"
 "Last-Translator: John Darrington <john@darrington.wattle.id.au>\n"
 "Language-Team: John Darrington <john@darrington.wattle.id.au>\n"
@@ -976,28 +976,28 @@ msgstr ""
 msgid "An I/O error occurred writing system file \"%s\"."
 msgstr ""
 
-#: src/data/variable.c:209
+#: src/data/variable.c:225
 #, c-format
 msgid ""
 "Character `%c' (in %s) may not appear as the first character in a variable "
 "name."
 msgstr ""
 
-#: src/data/variable.c:221
+#: src/data/variable.c:237
 #, c-format
 msgid "Character `%c' (in %s) may not appear in a variable name."
 msgstr ""
 
-#: src/data/variable.c:249
+#: src/data/variable.c:265
 msgid "Variable name cannot be empty string."
 msgstr ""
 
-#: src/data/variable.c:255
+#: src/data/variable.c:271
 #, c-format
 msgid "Variable name %s exceeds %d-character limit."
 msgstr ""
 
-#: src/data/variable.c:263
+#: src/data/variable.c:279
 #, c-format
 msgid "`%s' may not be used as a variable name because it is a reserved word."
 msgstr ""
index a455e40a1f5bd72d025d30d941460d91ded5dc2a..e39692a062bfe4952ef13f1cf9cbadfba5305c2b 100644 (file)
@@ -142,6 +142,23 @@ var_clone (const struct variable *old_var)
   return new_var;
 }
 
+/* Create a variable to be used for internal calculations only */
+struct variable *
+var_create_internal (int case_idx)
+{
+  struct variable *v = var_create ("$internal", 0);
+
+  struct vardict_info vdi;
+
+  vdi.dict = NULL;
+  vdi.dict_index = 0;
+  vdi.case_index = case_idx;
+
+  var_set_vardict (v, &vdi);
+
+  return v;
+}
+
 /* Destroys variable V.
    V must not belong to a dictionary.  If it does, use
    dict_delete_var instead. */
@@ -150,7 +167,11 @@ var_destroy (struct variable *v)
 {
   if (v != NULL)
     {
-      assert (!var_has_vardict (v));
+      if (var_has_vardict (v))
+       {
+         const struct vardict_info *vdi = var_get_vardict (v);
+         assert (vdi->dict == NULL);
+       }
       cat_stored_values_destroy (v->obs_vals);
       var_clear_short_names (v);
       var_clear_aux (v);
index c7f86aaf716896541de0909829e8039527627e47..d2820d34bbeff2b4b750ff6ff71cfd6b86faeadc 100644 (file)
@@ -32,6 +32,8 @@ union value;
 struct variable *var_create (const char *name, int width);
 struct variable *var_clone (const struct variable *);
 void var_destroy (struct variable *);
+struct variable *var_create_internal (int case_idx);
+
 
 /* Variable names. */
 #define VAR_NAME_LEN 64 /* Maximum length of variable name, in bytes. */