#ifndef TYPES_H
#define TYPES_H
struct value_s;
enum {
UNDEFINED,
NIL,
BOOLEAN,
INTEGER,
FLOAT,
STRING,
OBJECT
};
struct string_reference_s {
struct value_s *prev;
struct value_s *next;
void *value;
};
struct object_reference_s {
struct value_s *prev;
struct value_s *next;
void *value;
};
typedef struct value_s {
int type;
union {
int integer;
float real;
struct string_reference_s *string;
struct object_reference_s *object;
};
} value;
value create_value( void );
value duplicate_value( const value * );