pspp-dev
[Top][All Lists]
Advanced

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

Re: patch: put unique dictionary indexes into internal variables


From: John Darrington
Subject: Re: patch: put unique dictionary indexes into internal variables
Date: Fri, 9 Jan 2009 08:29:55 +0900
User-agent: Mutt/1.5.13 (2006-08-11)

I can't see that it would do any harm.  It's a pity that it introduces
a static variable, but it's by no means the only such one.

J'


On Thu, Jan 08, 2009 at 12:53:11PM -0800, Ben Pfaff wrote:
     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
     
     
     _______________________________________________
     pspp-dev mailing list
     address@hidden
     http://lists.gnu.org/mailman/listinfo/pspp-dev

-- 
PGP Public key ID: 1024D/2DE827B3 
fingerprint = 8797 A26D 0854 2EAB 0285  A290 8A67 719C 2DE8 27B3
See http://pgp.mit.edu or any PGP keyserver for public key.


Attachment: signature.asc
Description: Digital signature


reply via email to

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