]> git.draconx.ca Git - gob-dx.git/blobdiff - src/treefuncs.c
Release 1.0.2
[gob-dx.git] / src / treefuncs.c
index e1b2be6db3ec4bf3248b69e476e4382a9bbdf864..e424df35e863c2d1e14a9ea31dc9d2ed80f994b1 100644 (file)
@@ -41,12 +41,13 @@ Node * new_check (int chtype, char * number)
        return (Node *)self;
 }
 
-Node * new_class (char * otype, char * ptype, GList * nodes)
+Node * new_class (char * otype, char * ptype, char * chunk_size, GList * nodes)
 {
        Class * self = g_new0(Class, 1);
        self->type = CLASS_NODE;
        self->otype = otype;
        self->ptype = ptype;
+       self->chunk_size = chunk_size;
        self->nodes = nodes;
        return (Node *)self;
 }
@@ -61,7 +62,7 @@ Node * new_funcarg (Type * atype, char * name, GList * checks)
        return (Node *)self;
 }
 
-Node * new_method (int scope, int method, Type * mtype, char * otype, GList * gtktypes, GList * flags, char * id, GList * args, char * onerror, char * defreturn, char * cbuf, int line_no, int ccode_line, gboolean vararg)
+Node * new_method (int scope, int method, Type * mtype, char * otype, GList * gtktypes, GList * flags, char * id, GList * args, char * onerror, char * defreturn, char * cbuf, int line_no, int ccode_line, gboolean vararg, int unique_id)
 {
        Method * self = g_new0(Method, 1);
        self->type = METHOD_NODE;
@@ -79,15 +80,16 @@ Node * new_method (int scope, int method, Type * mtype, char * otype, GList * gt
        self->line_no = line_no;
        self->ccode_line = ccode_line;
        self->vararg = vararg;
+       self->unique_id = unique_id;
        return (Node *)self;
 }
 
-Node * new_type (int stars, char * name, char * postfix)
+Node * new_type (char * name, char * pointer, char * postfix)
 {
        Type * self = g_new0(Type, 1);
        self->type = TYPE_NODE;
-       self->stars = stars;
        self->name = name;
+       self->pointer = pointer;
        self->postfix = postfix;
        return (Node *)self;
 }
@@ -111,8 +113,8 @@ Node * new_variable (int scope, Type * vtype, char * id, int line_no, char * des
 Argument * copy_argument (Argument * self)
 {
        Argument * new;
-       g_return_if_fail(self != NULL);
-       g_return_if_fail(self->type == ARGUMENT_NODE);
+       g_return_val_if_fail(self != NULL, NULL);
+       g_return_val_if_fail(self->type == ARGUMENT_NODE, NULL);
        new = g_new0(Argument, 1);
        new->type = ARGUMENT_NODE;
        new->gtktype = g_strdup(self->gtktype);
@@ -130,8 +132,8 @@ Argument * copy_argument (Argument * self)
 CCode * copy_ccode (CCode * self)
 {
        CCode * new;
-       g_return_if_fail(self != NULL);
-       g_return_if_fail(self->type == CCODE_NODE);
+       g_return_val_if_fail(self != NULL, NULL);
+       g_return_val_if_fail(self->type == CCODE_NODE, NULL);
        new = g_new0(CCode, 1);
        new->type = CCODE_NODE;
        new->cctype = self->cctype;
@@ -143,8 +145,8 @@ CCode * copy_ccode (CCode * self)
 Check * copy_check (Check * self)
 {
        Check * new;
-       g_return_if_fail(self != NULL);
-       g_return_if_fail(self->type == CHECK_NODE);
+       g_return_val_if_fail(self != NULL, NULL);
+       g_return_val_if_fail(self->type == CHECK_NODE, NULL);
        new = g_new0(Check, 1);
        new->type = CHECK_NODE;
        new->chtype = self->chtype;
@@ -155,12 +157,13 @@ Check * copy_check (Check * self)
 Class * copy_class (Class * self)
 {
        Class * new;
-       g_return_if_fail(self != NULL);
-       g_return_if_fail(self->type == CLASS_NODE);
+       g_return_val_if_fail(self != NULL, NULL);
+       g_return_val_if_fail(self->type == CLASS_NODE, NULL);
        new = g_new0(Class, 1);
        new->type = CLASS_NODE;
        new->otype = g_strdup(self->otype);
        new->ptype = g_strdup(self->ptype);
+       new->chunk_size = g_strdup(self->chunk_size);
        new->nodes = copy_node_list(self->nodes);
        return new;
 }
@@ -168,8 +171,8 @@ Class * copy_class (Class * self)
 FuncArg * copy_funcarg (FuncArg * self)
 {
        FuncArg * new;
-       g_return_if_fail(self != NULL);
-       g_return_if_fail(self->type == FUNCARG_NODE);
+       g_return_val_if_fail(self != NULL, NULL);
+       g_return_val_if_fail(self->type == FUNCARG_NODE, NULL);
        new = g_new0(FuncArg, 1);
        new->type = FUNCARG_NODE;
        new->atype = copy_type(self->atype);
@@ -181,8 +184,8 @@ FuncArg * copy_funcarg (FuncArg * self)
 Method * copy_method (Method * self)
 {
        Method * new;
-       g_return_if_fail(self != NULL);
-       g_return_if_fail(self->type == METHOD_NODE);
+       g_return_val_if_fail(self != NULL, NULL);
+       g_return_val_if_fail(self->type == METHOD_NODE, NULL);
        new = g_new0(Method, 1);
        new->type = METHOD_NODE;
        new->scope = self->scope;
@@ -199,18 +202,19 @@ Method * copy_method (Method * self)
        new->line_no = self->line_no;
        new->ccode_line = self->ccode_line;
        new->vararg = self->vararg;
+       new->unique_id = self->unique_id;
        return new;
 }
 
 Type * copy_type (Type * self)
 {
        Type * new;
-       g_return_if_fail(self != NULL);
-       g_return_if_fail(self->type == TYPE_NODE);
+       g_return_val_if_fail(self != NULL, NULL);
+       g_return_val_if_fail(self->type == TYPE_NODE, NULL);
        new = g_new0(Type, 1);
        new->type = TYPE_NODE;
-       new->stars = self->stars;
        new->name = g_strdup(self->name);
+       new->pointer = g_strdup(self->pointer);
        new->postfix = g_strdup(self->postfix);
        return new;
 }
@@ -218,8 +222,8 @@ Type * copy_type (Type * self)
 Variable * copy_variable (Variable * self)
 {
        Variable * new;
-       g_return_if_fail(self != NULL);
-       g_return_if_fail(self->type == VARIABLE_NODE);
+       g_return_val_if_fail(self != NULL, NULL);
+       g_return_val_if_fail(self->type == VARIABLE_NODE, NULL);
        new = g_new0(Variable, 1);
        new->type = VARIABLE_NODE;
        new->scope = self->scope;
@@ -269,6 +273,7 @@ void free_class (Class * self)
        g_return_if_fail(self->type == CLASS_NODE);
        g_free(self->otype);
        g_free(self->ptype);
+       g_free(self->chunk_size);
        free_node_list(self->nodes);
        g_free(self);
 }
@@ -304,6 +309,7 @@ void free_type (Type * self)
        g_return_if_fail(self != NULL);
        g_return_if_fail(self->type == TYPE_NODE);
        g_free(self->name);
+       g_free(self->pointer);
        g_free(self->postfix);
        g_free(self);
 }
@@ -321,8 +327,8 @@ void free_variable (Variable * self)
 
 Node * copy_node(Node *node)
 {
-       g_return_if_fail(node != NULL);
-       g_return_if_fail(node->type >= 0 && node->type < LAST_NODE_TYPE);
+       g_return_val_if_fail(node != NULL, NULL);
+       g_return_val_if_fail(node->type >= 0 && node->type < LAST_NODE_TYPE, NULL);
        switch(node->type) {
        case ARGUMENT_NODE: return (Node *)copy_argument ((Argument *)node);
        case CCODE_NODE: return (Node *)copy_ccode ((CCode *)node);