X-Git-Url: http://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/a8ea1a669f332b0ed29c6271896476f59f357533..5d4e3f65125a1e67702b7fbd4096d5e2fd3ec798:/src/treefuncs.c diff --git a/src/treefuncs.c b/src/treefuncs.c index 6c2ca40..ac2fd01 100644 --- a/src/treefuncs.c +++ b/src/treefuncs.c @@ -105,6 +105,7 @@ enum { QUARK_interfaces_STEAL, QUARK_nodes, QUARK_nodes_STEAL, + QUARK_abstract, QUARK_name, QUARK_name_STEAL, QUARK_pointer, @@ -157,6 +158,8 @@ enum { QUARK_id_STEAL, QUARK_args, QUARK_args_STEAL, + QUARK_funcattrs, + QUARK_funcattrs_STEAL, QUARK_onerror, QUARK_onerror_STEAL, QUARK_defreturn, @@ -212,6 +215,7 @@ ensure_quarks (void) g_hash_table_insert (quark_ht, "interfaces:steal", GINT_TO_POINTER (QUARK_interfaces_STEAL)); g_hash_table_insert (quark_ht, "nodes", GINT_TO_POINTER (QUARK_nodes)); g_hash_table_insert (quark_ht, "nodes:steal", GINT_TO_POINTER (QUARK_nodes_STEAL)); + g_hash_table_insert (quark_ht, "abstract", GINT_TO_POINTER (QUARK_abstract)); g_hash_table_insert (quark_ht, "name", GINT_TO_POINTER (QUARK_name)); g_hash_table_insert (quark_ht, "name:steal", GINT_TO_POINTER (QUARK_name_STEAL)); g_hash_table_insert (quark_ht, "pointer", GINT_TO_POINTER (QUARK_pointer)); @@ -264,6 +268,8 @@ ensure_quarks (void) g_hash_table_insert (quark_ht, "id:steal", GINT_TO_POINTER (QUARK_id_STEAL)); g_hash_table_insert (quark_ht, "args", GINT_TO_POINTER (QUARK_args)); g_hash_table_insert (quark_ht, "args:steal", GINT_TO_POINTER (QUARK_args_STEAL)); + g_hash_table_insert (quark_ht, "funcattrs", GINT_TO_POINTER (QUARK_funcattrs)); + g_hash_table_insert (quark_ht, "funcattrs:steal", GINT_TO_POINTER (QUARK_funcattrs_STEAL)); g_hash_table_insert (quark_ht, "onerror", GINT_TO_POINTER (QUARK_onerror)); g_hash_table_insert (quark_ht, "onerror:steal", GINT_TO_POINTER (QUARK_onerror_STEAL)); g_hash_table_insert (quark_ht, "defreturn", GINT_TO_POINTER (QUARK_defreturn)); @@ -360,6 +366,7 @@ copy_class (Class * self) new->chunk_size = g_strdup (self->chunk_size); new->interfaces = g_list_copy (self->interfaces); COPY_LIST_VALS(new->interfaces, g_strdup); new->nodes = node_list_copy (self->nodes); + new->abstract = self->abstract; return new; } @@ -448,6 +455,7 @@ copy_method (Method * self) new->flags = g_list_copy (self->flags); COPY_LIST_VALS(new->flags, g_strdup); new->id = g_strdup (self->id); new->args = node_list_copy (self->args); + new->funcattrs = g_strdup (self->funcattrs); new->onerror = g_strdup (self->onerror); new->defreturn = g_strdup (self->defreturn); new->cbuf = g_strdup (self->cbuf); @@ -637,6 +645,7 @@ free_method (Method * self) g_list_foreach (self->flags, (GFunc)g_free, NULL); g_list_free (self->flags); g_free (self->id); node_list_free (self->args); + g_free (self->funcattrs); g_free (self->onerror); g_free (self->defreturn); g_free (self->cbuf); @@ -947,6 +956,11 @@ setv_class (Class * self, va_list __ap) self->nodes = nodes; break; } + case QUARK_abstract: { + gboolean abstract = va_arg (__ap, gboolean); + self->abstract = abstract; + break; + } default: g_warning ("Argument named 'Class::%s' does not exist", arg); break; @@ -1293,6 +1307,18 @@ setv_method (Method * self, va_list __ap) self->args = args; break; } + case QUARK_funcattrs: { + char * funcattrs = va_arg (__ap, char *); + char * __old_value = self->funcattrs; + self->funcattrs = g_strdup (funcattrs); + g_free (__old_value); + break; + } + case QUARK_funcattrs_STEAL: { + char * funcattrs = va_arg (__ap, char *); + self->funcattrs = funcattrs; + break; + } case QUARK_onerror: { char * onerror = va_arg (__ap, char *); char * __old_value = self->onerror;