#ifndef _DEFINE_H_
#define _DEFINE_H_
#ifndef _NUMB_H_
#error "Need to include numb.h before define.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
enum define_type { DEF_ERR = 0, DEF_NUMB, DEF_STRG, DEF_BOOL, DEF_SET };
typedef enum define_type DefineType;
typedef struct define Define;
extern Define* define_new(char const* name, DefineType type) expects_NONNULL returns_NONNULL;
extern void define_set_param(Define* def, Tuple* param) expects_NONNULL;
extern void define_set_code(Define* def, CodeNode* code) expects_NONNULL;
extern void define_exit(void);
extern Define* define_lookup(char const* name) expects_NONNULL;
extern char const* define_get_name(Define const* def) expects_NONNULL returns_NONNULL is_PURE;
extern DefineType define_get_type(Define const* def) expects_NONNULL is_PURE;
extern Tuple const* define_get_param(Define const* def) expects_NONNULL returns_NONNULL is_PURE;
extern CodeNode* define_get_code(Define const* def) expects_NONNULL is_PURE;
#ifdef __cplusplus
}
#endif
#endif