#include <config.h>
#include "value-labels.h"
-#include <assert.h>
+#include "error.h"
#include <stdlib.h>
#include <string.h>
#include "alloc.h"
/* Free a value label. */
void
-free_int_val_lab (void *vl_, void *vls_ unused)
+free_int_val_lab (void *vl_, void *vls_ UNUSED)
{
struct int_val_lab *vl = vl_;
/* A hsh_compare_func that compares A and B. */
static int
-compare_atoms (const void *a_, const void *b_, void *aux unused)
+compare_atoms (const void *a_, const void *b_, void *aux UNUSED)
{
const struct atom *a = a_;
const struct atom *b = b_;
/* A hsh_hash_func that hashes ATOM. */
static unsigned
-hash_atom (const void *atom_, void *aux unused)
+hash_atom (const void *atom_, void *aux UNUSED)
{
const struct atom *atom = atom_;
/* A hsh_free_func that destroys ATOM. */
static void
-free_atom (void *atom_, void *aux unused)
+free_atom (void *atom_, void *aux UNUSED)
{
struct atom *atom = atom_;
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 = 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;
+}