X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fvariable.h;h=0f5bb26dbc1c1d5dc55901f4d4b67691fea7fb89;hb=ea37b218562bd9c02c23d2669c70b2509e0588ea;hp=4a22d2488525a4afeeb511d597406cbb831230a5;hpb=dcf9b154cbcaa35c3d8459a201b77eec8bcb30bd;p=pspp diff --git a/src/data/variable.h b/src/data/variable.h index 4a22d24885..0f5bb26dbc 100644 --- a/src/data/variable.h +++ b/src/data/variable.h @@ -28,8 +28,6 @@ #include "format.h" #include "missing-values.h" -/* Script variables. */ - /* Variable type. */ enum var_type { @@ -40,6 +38,12 @@ enum var_type const char *var_type_adj (enum var_type); const char *var_type_noun (enum var_type); +/* Maximum lengths of short and long variable names. + Most operations support long variable names, + but some file formats are limited to short names. */ +#define SHORT_NAME_LEN 8 /* Short name length. */ +#define LONG_NAME_LEN 64 /* Long name length. */ + /* A variable's dictionary entry. */ struct variable { @@ -58,8 +62,7 @@ struct variable /* Case information. */ int fv, nv; /* Index into `value's, number of values. */ - bool init; /* True if needs init and possibly reinit. */ - bool reinit; /* True: reinitialize; false: leave. */ + bool leave; /* Leave value from case to case? */ /* Data for use by containing dictionary. */ int index; /* Dictionary index. */ @@ -83,6 +86,7 @@ struct variable /* Variable names. */ bool var_is_valid_name (const char *, bool issue_error); +bool var_is_plausible_name (const char *name, bool issue_error); int compare_var_names (const void *, const void *, void *); unsigned hash_var_name (const void *, void *); @@ -122,71 +126,15 @@ struct vector int cnt; /* Number of variables. */ }; -void discard_variables (void); - -/* This is the active file dictionary. */ -extern struct dictionary *default_dict; - -/* Transformation state. */ - /* PROCESS IF expression. */ extern struct expression *process_if_expr; -/* TEMPORARY support. */ - -/* 1=TEMPORARY has been executed at some point. */ -extern int temporary; - -/* If temporary!=0, the saved dictionary. */ -extern struct dictionary *temp_dict; - -/* If temporary!=0, index into t_trns[] (declared far below) that - gives the point at which data should be written out. -1 means that - the data shouldn't be changed since all transformations are - temporary. */ -extern size_t temp_trns; - -void cancel_temporary (void); - struct ccase; void dump_split_vars (const struct ccase *); -/* Transformations. */ - -/* trns_proc_func return values. */ -#define TRNS_CONTINUE -1 /* Continue to next transformation. */ -#define TRNS_DROP_CASE -2 /* Drop this case. */ -#define TRNS_ERROR -3 /* A serious error, so stop the procedure. */ -#define TRNS_NEXT_CASE -4 /* Skip to next case. INPUT PROGRAM only. */ -#define TRNS_END_FILE -5 /* End of input. INPUT PROGRAM only. */ - -typedef int trns_proc_func (void *, struct ccase *, int); -typedef bool trns_free_func (void *); - -/* A transformation. */ -struct transformation - { - trns_proc_func *proc; /* Transformation proc. */ - trns_free_func *free; /* Garbage collector proc. */ - void *private; /* Private data. */ - }; - -/* Array of transformations */ -extern struct transformation *t_trns; - -/* Number of transformations, maximum number in array currently. */ -extern size_t n_trns, m_trns; - -/* Index of first transformation that is really a transformation. Any - transformations before this belong to INPUT PROGRAM. */ -extern size_t f_trns; - -void add_transformation (trns_proc_func *, trns_free_func *, void *); -size_t next_transformation (void); -bool cancel_transformations (void); - struct var_set; +struct dictionary; struct var_set *var_set_create_from_dict (const struct dictionary *d); struct var_set *var_set_create_from_array (struct variable *const *var, size_t); @@ -234,4 +182,16 @@ int parse_mixed_vars_pool (struct pool *, const char * var_to_string(const struct variable *var); +/* Two complementary functions for dealing with + Very Long String variables */ + +void copy_demangle (char *dst, size_t dst_size, + const char *src, size_t src_size); + +void copy_mangle (char *dst, size_t dst_size, + const char *src, size_t src_size); + +int width_to_bytes(int width); + + #endif /* !variable.h */