X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=inline;f=src%2Fvalue-labels.c;h=16e649687cb577db05891b75f9ee913251d92f6e;hb=f1696fab032a5ae5c44e3a3dedba343fce9ffd5c;hp=9c7640866ceb209e5a77c38cd470228328d156f8;hpb=7b98b3a4f58f6dc5a8e9cbc188b627966d5e652d;p=pspp diff --git a/src/value-labels.c b/src/value-labels.c index 9c7640866c..16e649687c 100644 --- a/src/value-labels.c +++ b/src/value-labels.c @@ -19,11 +19,11 @@ #include #include "value-labels.h" -#include +#include "error.h" #include -#include #include "alloc.h" #include "hash.h" +#include "str.h" static hsh_compare_func compare_int_val_lab; static hsh_hash_func hash_int_val_lab; @@ -488,3 +488,37 @@ free_atom (void *atom_, void *aux UNUSED) free (atom->string); free (atom); } + + +/* Get a string representing the value. + That is, if it has a label, then return that label, + otherwise, if the value is alpha, then return the string for it, + else format it and return the formatted string +*/ +const char * +value_to_string(const union value *val, const struct variable *var) +{ + static char buf[100]; + char *s; + const struct val_labs *val_labs ; + + if ( !val || ! var ) + return 0; + + val_labs = var->val_labs; + + + s = val_labs_find (val_labs, *val); + + if ( s ) + return s; + + if ( 0 == var->width ) + snprintf(buf,100,"%g",val->f); + else + { + strncpy(buf,val->s,MAX_SHORT_STRING); + strcat(buf,"\0"); + } + return buf; +}