mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-13 15:56:23 +01:00
Bug 556174 – parse types for lists etc.
2008-10-15 Tommi Komulainen <tommi.komulainen@iki.fi> Bug 556174 – parse types for lists etc. * girepository/girparser.c (end_type_recurse): * tests/boxed.gir: * tools/generate.c (write_type_info, write_field_info, write_callable_info, write_callable_info, write_constant_info, write_property_info): use nested <type>s for lists and hashes svn path=/trunk/; revision=717
This commit is contained in:
parent
6e266d5f53
commit
9153ef51ae
27
girparser.c
27
girparser.c
@ -1607,30 +1607,33 @@ end_type_recurse (ParseContext *ctx)
|
||||
{
|
||||
GList *types;
|
||||
GIrNodeType *parent;
|
||||
GIrNodeType *param = NULL;
|
||||
|
||||
parent = (GIrNodeType *) ((GList*)ctx->type_stack->data)->data;
|
||||
if (ctx->type_parameters)
|
||||
param = (GIrNodeType *) ctx->type_parameters->data;
|
||||
|
||||
if (parent->tag == GI_TYPE_TAG_ARRAY ||
|
||||
parent->tag == GI_TYPE_TAG_GLIST ||
|
||||
parent->tag == GI_TYPE_TAG_GSLIST)
|
||||
{
|
||||
if (ctx->type_parameters == NULL)
|
||||
parent->parameter_type1 = parse_type (ctx, "pointer");
|
||||
g_assert (param != NULL);
|
||||
|
||||
if (parent->parameter_type1 == NULL)
|
||||
parent->parameter_type1 = param;
|
||||
else
|
||||
parent->parameter_type1 = (GIrNodeType*)ctx->type_parameters->data;
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
else if (parent->tag == GI_TYPE_TAG_GHASH)
|
||||
{
|
||||
if (ctx->type_parameters == NULL)
|
||||
{
|
||||
parent->parameter_type1 = parse_type (ctx, "pointer");
|
||||
parent->parameter_type2 = parse_type (ctx, "pointer");
|
||||
}
|
||||
g_assert (param != NULL);
|
||||
|
||||
if (parent->parameter_type1 == NULL)
|
||||
parent->parameter_type1 = param;
|
||||
else if (parent->parameter_type2 == NULL)
|
||||
parent->parameter_type2 = param;
|
||||
else
|
||||
{
|
||||
parent->parameter_type1 = (GIrNodeType*) ctx->type_parameters->data;
|
||||
parent->parameter_type2 = (GIrNodeType*) ctx->type_parameters->next->data;
|
||||
}
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
g_list_free (ctx->type_parameters);
|
||||
ctx->type_parameters = (GList *)ctx->type_stack->data;
|
||||
|
Loading…
Reference in New Issue
Block a user