builder: Remove root special case from precompile

This commit is contained in:
Garrett Regier 2021-09-23 15:21:53 -07:00 committed by Matthias Clasen
parent 6c8b505f93
commit 9c12b58e32

View File

@ -374,9 +374,6 @@ marshal_tree (GString *marshaled,
case RECORD_TYPE_ELEMENT:
element = (RecordDataElement *)node;
/* Special case the root */
if (element->parent != NULL)
{
marshal_uint32 (marshaled, RECORD_TYPE_ELEMENT);
marshal_uint32 (marshaled, element->name->offset);
marshal_uint32 (marshaled, element->n_attributes);
@ -388,12 +385,10 @@ marshal_tree (GString *marshaled,
marshal_uint32 (marshaled, attr_names[i]->offset);
marshal_uint32 (marshaled, attr_values[i]->offset);
}
}
for (l = element->children.head; l != NULL; l = l->next)
marshal_tree (marshaled, l->data);
if (element->parent != NULL)
marshal_uint32 (marshaled, RECORD_TYPE_END_ELEMENT);
break;
case RECORD_TYPE_TEXT:
@ -407,6 +402,17 @@ marshal_tree (GString *marshaled,
}
}
static void
marshal_root (GString *marshaled,
RecordDataNode *node)
{
GList *l;
RecordDataElement *element = (RecordDataElement *)node;
for (l = element->children.head; l != NULL; l = l->next)
marshal_tree (marshaled, l->data);
}
/**
* _gtk_buildable_parser_precompile:
* @text: chunk of text to parse
@ -481,7 +487,7 @@ _gtk_buildable_parser_precompile (const char *text,
g_string_append_len (marshaled, s->string, s->len + 1);
}
marshal_tree (marshaled, &data.root->base);
marshal_root (marshaled, &data.root->base);
record_data_node_free (&data.root->base);
g_string_chunk_free (data.chunks);