X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fvar.h;h=63296b9f4b35c6554e3c244c12d9c934a05b2110;hb=e35ff8ccb29404f2098e6f2fccace1c99c61b7be;hp=0bca760ed44aa3f5ce67559704b55a0d3924dae5;hpb=5501903810bcbae487b12bc44d9cbedf29644d96;p=pspp-builds.git diff --git a/src/var.h b/src/var.h index 0bca760e..63296b9f 100644 --- a/src/var.h +++ b/src/var.h @@ -20,10 +20,15 @@ #if !var_h #define var_h 1 + #include +#include "config.h" +#include "bool.h" #include "format.h" #include "val.h" + + /* Script variables. */ /* Variable type. */ @@ -53,10 +58,12 @@ enum MISSING_COUNT }; + /* A variable's dictionary entry. */ struct variable { - char name[9]; /* As a string. */ + char name[SHORT_NAME_LEN + 1]; /* As a string. */ + char *longname; /* Pointer to entry in dictionary's table */ int index; /* Index into its dictionary's var[]. */ int type; /* NUMERIC or ALPHA. */ @@ -77,13 +84,39 @@ struct variable struct val_labs *val_labs; /* Value labels. */ char *label; /* Variable label. */ + + /* GUI display parameters */ + enum measure measure; /* Nominal ordinal or continuous */ + int display_width; /* Width of data editor column */ + enum alignment alignment; /* Alignment of data in gui */ + /* Per-command info. */ void *aux; void (*aux_dtor) (struct variable *); }; -int compare_variables (const void *, const void *, void *); -unsigned hash_variable (const void *, void *); + +/* A tuple containing short names and longnames */ +struct name_table_entry +{ + char *longname; + char *name; +}; + +bool var_is_valid_name (const char *, bool issue_error); +int compare_var_names (const void *, const void *, void *); +unsigned hash_var_name (const void *, void *); + +/* Destroy and free up an nte */ +void free_nte(struct name_table_entry *nte); + + +unsigned hash_long_name (const void *e_, void *aux UNUSED) ; +int compare_long_names(const void *a_, const void *b_, void *aux); + + +int compare_var_ptr_names (const void *, const void *, void *); +unsigned hash_var_ptr_name (const void *, void *); void *var_attach_aux (struct variable *, void *aux, void (*aux_dtor) (struct variable *)); @@ -106,7 +139,7 @@ const char *dict_class_to_name (enum dict_class dict_class); struct vector { int idx; /* Index for dict_get_vector(). */ - char name[9]; /* Name. */ + char name[SHORT_NAME_LEN + 1]; /* Name. */ struct variable **var; /* Vector of variables. */ int cnt; /* Number of variables. */ }; @@ -196,6 +229,7 @@ size_t var_set_get_cnt (const struct var_set *vs); struct variable *var_set_get_var (const struct var_set *vs, size_t idx); struct variable *var_set_lookup_var (const struct var_set *vs, const char *name); +int var_set_lookup_var_idx (const struct var_set *vs, const char *name); void var_set_destroy (struct var_set *vs); /* Variable parsers. */