#define kMaxLabelLength     64
#define script_limit        256
#define MAX_LABEL_LENGTH    64
#define MAX_LABELS          6000
#define MAX_DEFINES         500
#define kOperator           300
#define kTerminator         -2

#define kTotal_commands     32

#ifndef _BOOL_DEF
#define _BOOL_DEF
typedef int BOOL;
#endif

#define TRUE 1
#define FALSE 0

#define LE_CREATE 1
#define LE_DESTROY 0

#define kDirective_amount (sizeof(directives)/16)
#define kComparitors_amount 4
#define kPreop_amount (sizeof(preops)/16)

typedef struct {
    int weight;
    int value;
} num_expr;

typedef struct {
    char *name;
    unsigned int value;
} label_struct;

typedef struct {
    char *name;
    char *define;
} define_struct;

typedef struct {
    int line;
    char *error;
    char *error_text;
} parse_error;

typedef struct {
    char *args;
    unsigned char opcode[4];
    unsigned int weight;
    unsigned char mask[2];
    unsigned char size,type;
} cmd_struct;

typedef struct {
    char *mnemonic;
    unsigned int ref; 
    unsigned int members;
    unsigned int weight;
} command_info;

typedef int (*in_backup)(FILE*);

typedef struct {
    in_backup input_backup;
    void *exp_backup;
    int index;
    char *expansion;
} expansion_struct;
