#define BOOL 1
#define CHAR 7
#define INT 31
#define FLOAT 32
#define STR 255

#define TRUE 1
#define FALSE 0
#define YES 1
#define NO 0
#define ONE 1
#define ZERO 0

typedef char bool;
typedef void * retype;
typedef int NOIDEA_type;
typedef int NOIDEA_size;

typedef struct NOIDEA_thing
{
    NOIDEA_type type;
    NOIDEA_size size;
    void * it;
    float number;
}NOIDEA_thing;


NOIDEA_type NOIDEA_gettype (NOIDEA_thing * this);
NOIDEA_size NOIDEA_getsize (NOIDEA_thing * this);
void NOIDEA_setbool (NOIDEA_thing * this, bool it);
void NOIDEA_setint (NOIDEA_thing * this, int it);
void NOIDEA_setfloat (NOIDEA_thing * this, float it);
void NOIDEA_setstr (NOIDEA_thing * this,int cnt, char * str);
void NOIDEA_set (NOIDEA_thing * this, NOIDEA_type type, NOIDEA_size size, void * it);
bool NOIDEA_getbool (NOIDEA_thing * this);
int NOIDEA_getint (NOIDEA_thing * this);
float NOIDEA_getfloat (NOIDEA_thing * this);
char *  NOIDEA_getstr (NOIDEA_thing * this);
void NOIDEA_copy (NOIDEA_thing * src, NOIDEA_thing * dest);
void NOIDEA_xchg (NOIDEA_thing * src, NOIDEA_thing * dest);
