You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA. */
#include <config.h>
#include "value-labels.h"
#include "error.h"
#include <stdlib.h>
-#include <string.h>
#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;
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;
+}