#ifndef VALUE_H
#define VALUE_H
#include "nodes/nodes.h"
typedef struct Integer
{
pg_node_attr(special_read_write)
NodeTag type;
int ival;
} Integer;
typedef struct Float
{
pg_node_attr(special_read_write)
NodeTag type;
char *fval;
} Float;
typedef struct Boolean
{
pg_node_attr(special_read_write)
NodeTag type;
bool boolval;
} Boolean;
typedef struct String
{
pg_node_attr(special_read_write)
NodeTag type;
char *sval;
} String;
typedef struct BitString
{
pg_node_attr(special_read_write)
NodeTag type;
char *bsval;
} BitString;
#define intVal(v) (castNode(Integer, v)->ival)
#define floatVal(v) atof(castNode(Float, v)->fval)
#define boolVal(v) (castNode(Boolean, v)->boolval)
#define strVal(v) (castNode(String, v)->sval)
extern Integer *makeInteger(int i);
extern Float *makeFloat(char *numericStr);
extern Boolean *makeBoolean(bool val);
extern String *makeString(char *str);
extern BitString *makeBitString(char *str);
#endif