[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: variable structure modification
From: |
Ben Pfaff |
Subject: |
Re: variable structure modification |
Date: |
Tue, 22 Nov 2005 09:25:55 -0800 |
User-agent: |
Gnus/5.110004 (No Gnus v0.4) Emacs/21.4 (gnu/linux) |
Jason Stover <address@hidden> writes:
> I have added the following two pieces of information
> to the variable structure:
>
> /* Values of a categorical variable which are in the active
> file. Procedures need vectors with binary entries, so any
> variable of type ALPHA will have its values stored here. */
> struct cat_vals *obs_vals;
> bool values_stored; /* True if a variables' values are encoded in
> obs_vals. A procedure may create
> obs_vals, then another procedure may
> destroy it. If values_stored is true, the
> procedure that needs the encoding does not
> need to pass the data again to find the
> encoding. If values_stored is false, the
> procedure must make an extra data pass.
> */
>
> This makes the binary encoding MUCH easier for
> any modeling procedure. It allowed me to simplify cat.c. I was
> going to keep a more complicated data structure inside the
> variable struct, as described in earlier email, but that seems
> to be overly complex overkill at this time.
Seems okay to me.
Is it necessary to have two members? Seems to me that just
obs_vals by itself would be enough. If it's null, there are no
values.
> In addition to adding the above information to a variable
> structure in var.h, I need to add two lines like this:
>
> v->obs_vals = NULL;
> v->values_stored = false;
>
> anywhere a variable struct * v is created. Where are the variables
> allocated, and may I add such information without stepping an anyone's
> toes?
dict_create_var() and dict_delete_var() are the main places that
variables are created and destroyed. There might be other spots
but I think I've killed all of those by now.
> Those two modifications (the first to var.h, the second to the place
> where variables are allocated) are the only changes I need to make.
>
> Transformations that alter categorical variables can drop this info
> by just setting v->values_stored to false and destroying v->obs_vals.
I'd add a function for doing that and put a call to it in
dict_delete_var().
--
Ben Pfaff
email: address@hidden
web: http://benpfaff.org