[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: patch: put unique dictionary indexes into internal variables
From: |
Ben Pfaff |
Subject: |
Re: patch: put unique dictionary indexes into internal variables |
Date: |
Tue, 13 Jan 2009 20:55:14 -0800 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux) |
Jason Stover <address@hidden> writes:
> On Mon, Jan 12, 2009 at 09:46:12AM -0800, Ben Pfaff wrote:
>> >> Ben Pfaff <address@hidden> writes:
>> >>
>> >> > Hi Jason. Here's the patch I promised.
>> >>
> Yes, I can use it. Thanks.
OK, I pushed this, as:
commit 486e95574d796cd1ce703aff4bc5b8f9f3021333
Author: Ben Pfaff <address@hidden>
Date: Tue Jan 13 20:41:54 2009 -0800
Put unique dictionary indexes into internal variables
Code that Jason is working on creates some internal variables, using
var_create_internal(), and wants to hash those variables based
on their dictionary indexes, along with some other variables that
are actually in a dictionary. Thus, the internal variables need to
have unique dictionary indexes.
diff --git a/src/data/variable.c b/src/data/variable.c
index ccbe65d..30cf03b 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
@@ -148,17 +148,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);
--
"But hey, the fact that I have better taste than anybody else in the
universe is just something I have to live with. It's not easy being
me."
--Linus Torvalds
Re: patch: put unique dictionary indexes into internal variables, John Darrington, 2009/01/08