static sql_subtype* dup_subtype(sql_allocator *sa, sql_subtype *st) { sql_subtype *res = SA_NEW(sa, sql_subtype); *res = *st; return res; }
static node * node_create(sql_allocator *sa, void *data) { node *n = (sa)?SA_NEW(sa, node):MNEW(node); n->next = NULL; n->data = data; return n; }
prop * prop_create( sql_allocator *sa, int kind, prop *pre ) { prop *p = SA_NEW(sa, prop); p->kind = kind; p->value = 0; p->p = pre; return p; }
static atom * atom_create( sql_allocator *sa ) { atom *a; a = SA_NEW(sa, atom); memset(&a->data, 0, sizeof(a->data)); a->d = dbl_nil; a->varid = -1; return a; }
sql_stack * sql_stack_new(sql_allocator *sa, int size) { sql_stack *s = SA_NEW(sa, sql_stack); s -> sa = sa; s -> size = size; s -> top = 0; s -> values = SA_NEW_ARRAY(sa, void*, size); s -> values[s->top++] = NULL; return s; }
sql_stack * sql_stack_new(sql_allocator *sa, int size) { sql_stack *s = SA_NEW(sa, sql_stack); if (s == NULL) return NULL; s -> sa = sa; s -> size = size; s -> top = 0; s -> values = SA_NEW_ARRAY(sa, void*, size); if (s->values == NULL) { _DELETE(s); return NULL; } s -> values[s->top++] = NULL; return s; }
static sql_exp * exp_create(sql_allocator *sa, int type ) { sql_exp *e = SA_NEW(sa, sql_exp); e->name = NULL; e->rname = NULL; e->card = 0; e->flag = 0; e->l = e->r = NULL; e->type = (expression_type)type; e->f = NULL; e->p = NULL; e->used = 0; e->tpe.type = NULL; e->tpe.comp_type = NULL; e->tpe.digits = e->tpe.scale = 0; return e; }