pspp-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

patch: put unique dictionary indexes into internal variables


From: Ben Pfaff
Subject: patch: put unique dictionary indexes into internal variables
Date: Thu, 08 Jan 2009 12:53:11 -0800
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux)

Hi Jason.  Here's the patch I promised.

For everyone else:

Jason is creating some internal variables, using
var_create_internal(), and he wants to hash those variables based
on their dictionary indexes, along with some other variables that
are actually in a dictionary.  Thus, he needs the internal
variables to have unique dictionary indexes.  That's what the
patch does.

Does this seem reasonable?

diff --git a/src/data/variable.c b/src/data/variable.c
index 7c18ab6..0da688c 100644
--- a/src/data/variable.c
+++ b/src/data/variable.c
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
+   Copyright (C) 1997-9, 2000, 2006, 2009 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -149,17 +149,21 @@ var_clone (const struct variable *old_var)
   return new_var;
 }
 
-/* Create a variable to be used for internal calculations only */
+/* Create a variable to be used for internal calculations only.
+   The variable is assigned a unique dictionary index and a case
+   index of CASE_IDX. */
 struct variable *
 var_create_internal (int case_idx)
 {
   struct variable *v = var_create ("$internal", 0);
-
   struct vardict_info vdi;
+  static int counter = INT_MAX / 2;
 
   vdi.dict = NULL;
-  vdi.dict_index = 0;
   vdi.case_index = case_idx;
+  vdi.dict_index = counter++;
+  if (counter == INT_MAX)
+    counter = INT_MAX / 2;
 
   var_set_vardict (v, &vdi);
 

-- 
Ben Pfaff 
http://benpfaff.org




reply via email to

[Prev in Thread] Current Thread [Next in Thread]