X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fvars-atr.c;h=8a23a357ec725566e2273a8bfad602d6f3432895;hb=29c51e39acf3554a56aa2adc9451cc5fd70318ae;hp=3ce08b05ce753c69eb841c53482d5dc90f8dde68;hpb=b321086267ad1014dc5d09886396cde30f094437;p=pspp-builds.git diff --git a/src/vars-atr.c b/src/vars-atr.c index 3ce08b05..8a23a357 100644 --- a/src/vars-atr.c +++ b/src/vars-atr.c @@ -81,7 +81,7 @@ compare_values (const union value *a, const union value *b, int width) if (width == 0) return a->f < b->f ? -1 : a->f > b->f; else - return memcmp (a->s, b->s, width); + return memcmp (a->s, b->s, min(MAX_SHORT_STRING, width)); } /* Create a hash of v */ @@ -93,7 +93,7 @@ hash_value(const union value *v, int width) if ( 0 == width ) id_hash = hsh_hash_double (v->f); else - id_hash = hsh_hash_bytes (v->s, width); + id_hash = hsh_hash_bytes (v->s, min(MAX_SHORT_STRING, width)); return id_hash; } @@ -233,7 +233,7 @@ is_user_missing (const union value *val, const struct variable *v) /* A hsh_compare_func that orders variables A and B by their names. */ int -compare_variables (const void *a_, const void *b_, void *foo UNUSED) +compare_var_names (const void *a_, const void *b_, void *foo UNUSED) { const struct variable *a = a_; const struct variable *b = b_; @@ -243,9 +243,30 @@ compare_variables (const void *a_, const void *b_, void *foo UNUSED) /* A hsh_hash_func that hashes variable V based on its name. */ unsigned -hash_variable (const void *v_, void *foo UNUSED) +hash_var_name (const void *v_, void *foo UNUSED) { const struct variable *v = v_; return hsh_hash_string (v->name); } + +/* A hsh_compare_func that orders pointers to variables A and B + by their names. */ +int +compare_var_ptr_names (const void *a_, const void *b_, void *foo UNUSED) +{ + struct variable *const *a = a_; + struct variable *const *b = b_; + + return strcmp ((*a)->name, (*b)->name); +} + +/* A hsh_hash_func that hashes pointer to variable V based on its + name. */ +unsigned +hash_var_ptr_name (const void *v_, void *foo UNUSED) +{ + struct variable *const *v = v_; + + return hsh_hash_string ((*v)->name); +}