50 INVALID_IDENTIFIER = 2,
55 VARIABLE_LIMIT_REACHED = 7,
60 typedef enum lvm_status lvm_status_t;
62 #define LVM_ERROR(x) (x >= 2)
73 typedef struct lvm_instance lvm_instance_t;
81 typedef enum node_type node_type_t;
84 LVM_ADD = LVM_ARITH_OP | 1,
85 LVM_SUB = LVM_ARITH_OP | 2,
86 LVM_MUL = LVM_ARITH_OP | 3,
87 LVM_DIV = LVM_ARITH_OP | 4,
88 LVM_EQ = LVM_CMP_OP | 1,
89 LVM_NEQ = LVM_CMP_OP | 2,
90 LVM_GE = LVM_CMP_OP | 3,
91 LVM_GEQ = LVM_CMP_OP | 4,
92 LVM_LE = LVM_CMP_OP | 5,
93 LVM_LEQ = LVM_CMP_OP | 6,
94 LVM_AND = LVM_CONNECTIVE | 1,
95 LVM_OR = LVM_CONNECTIVE | 2,
96 LVM_NOT = LVM_CONNECTIVE | 3
98 typedef enum operator operator_t;
105 typedef enum operand_type operand_type_t;
107 typedef unsigned char variable_id_t;
119 operand_value_t value;
121 typedef struct operand operand_t;
123 void lvm_reset(lvm_instance_t *p,
unsigned char *code, lvm_ip_t size);
124 void lvm_clone(lvm_instance_t *dst, lvm_instance_t *src);
125 lvm_status_t lvm_derive(lvm_instance_t *p);
126 lvm_status_t lvm_get_derived_range(lvm_instance_t *p,
char *name,
127 operand_value_t *min,
128 operand_value_t *max);
129 void lvm_print_derivations(lvm_instance_t *p);
130 lvm_status_t lvm_execute(lvm_instance_t *p);
131 lvm_status_t lvm_register_variable(
char *name, operand_type_t type);
132 lvm_status_t lvm_set_variable_value(
char *name, operand_value_t value);
133 void lvm_print_code(lvm_instance_t *p);
134 lvm_ip_t lvm_jump_to_operand(lvm_instance_t *p);
135 lvm_ip_t lvm_shift_for_operator(lvm_instance_t *p, lvm_ip_t end);
136 lvm_ip_t lvm_get_end(lvm_instance_t *p);
137 lvm_ip_t lvm_set_end(lvm_instance_t *p, lvm_ip_t end);
138 void lvm_set_op(lvm_instance_t *p, operator_t op);
139 void lvm_set_relation(lvm_instance_t *p, operator_t op);
140 void lvm_set_operand(lvm_instance_t *p, operand_t *op);
141 void lvm_set_long(lvm_instance_t *p,
long l);
142 void lvm_set_variable(lvm_instance_t *p,
char *name);
#define TRUE
An alias for one, used for clarity.
Database configuration options.
#define FALSE
An alias for zero, used for clarity.