g_ir_node_build_members (GList **members,
GIrNodeTypeId type,
guint16 *count,
+ GIrNode *parent,
GIrTypelibBuild *build,
guint32 *offset,
guint32 *offset2)
if (member->type == type)
{
(*count)++;
- g_ir_node_build_typelib (member, build, offset, offset2);
+ g_ir_node_build_typelib (member, parent, build, offset, offset2);
*members = g_list_delete_link (*members, l);
}
l = next;
void
g_ir_node_build_typelib (GIrNode *node,
+ GIrNode *parent,
GIrTypelibBuild *build,
guint32 *offset,
guint32 *offset2)
pos = *offset2 + G_STRUCT_OFFSET (ArrayTypeBlob, type);
*offset2 += sizeof (ArrayTypeBlob);
- g_ir_node_build_typelib ((GIrNode *)type->parameter_type1,
- build, &pos, offset2);
+ g_ir_node_build_typelib ((GIrNode *)type->parameter_type1,
+ node, build, &pos, offset2);
}
break;
*offset2 += sizeof (ParamTypeBlob) + sizeof (SimpleTypeBlob);
g_ir_node_build_typelib ((GIrNode *)type->parameter_type1,
- build, &pos, offset2);
+ node, build, &pos, offset2);
}
break;
*offset2 += sizeof (ParamTypeBlob) + sizeof (SimpleTypeBlob)*2;
g_ir_node_build_typelib ((GIrNode *)type->parameter_type1,
- build, &pos, offset2);
+ node, build, &pos, offset2);
g_ir_node_build_typelib ((GIrNode *)type->parameter_type2,
- build, &pos, offset2);
+ node, build, &pos, offset2);
}
break;
blob->struct_offset = 0xFFFF; /* mark as unknown */
g_ir_node_build_typelib ((GIrNode *)field->type,
- build, offset, offset2);
+ node, build, offset, offset2);
}
break;
blob->reserved = 0;
g_ir_node_build_typelib ((GIrNode *)prop->type,
- build, offset, offset2);
+ node, build, offset, offset2);
}
break;
g_debug ("building function '%s'", function->symbol);
g_ir_node_build_typelib ((GIrNode *)function->result->type,
- build, &signature, offset2);
+ node, build, &signature, offset2);
blob2->may_return_null = function->result->allow_none;
blob2->caller_owns_return_value = function->result->transfer;
{
GIrNode *param = (GIrNode *)l->data;
- g_ir_node_build_typelib (param, build, &signature, offset2);
+ g_ir_node_build_typelib (param, node, build, &signature, offset2);
}
}
blob->signature = signature;
g_ir_node_build_typelib ((GIrNode *)function->result->type,
- build, &signature, offset2);
+ node, build, &signature, offset2);
blob2->may_return_null = function->result->allow_none;
blob2->caller_owns_return_value = function->result->transfer;
{
GIrNode *param = (GIrNode *)l->data;
- g_ir_node_build_typelib (param, build, &signature, offset2);
+ g_ir_node_build_typelib (param, node, build, &signature, offset2);
}
}
break;
blob->signature = signature;
g_ir_node_build_typelib ((GIrNode *)signal->result->type,
- build, &signature, offset2);
+ node, build, &signature, offset2);
blob2->may_return_null = signal->result->allow_none;
blob2->caller_owns_return_value = signal->result->transfer;
{
GIrNode *param = (GIrNode *)l->data;
- g_ir_node_build_typelib (param, build, &signature, offset2);
+ g_ir_node_build_typelib (param, node, build, &signature, offset2);
}
}
break;
blob->signature = signature;
g_ir_node_build_typelib ((GIrNode *)vfunc->result->type,
- build, &signature, offset2);
+ node, build, &signature, offset2);
blob2->may_return_null = vfunc->result->allow_none;
blob2->caller_owns_return_value = vfunc->result->transfer;
{
GIrNode *param = (GIrNode *)l->data;
- g_ir_node_build_typelib (param, build, &signature, offset2);
+ g_ir_node_build_typelib (param, node, build, &signature, offset2);
}
}
break;
blob->closure = param->closure;
blob->destroy = param->destroy;
- g_ir_node_build_typelib ((GIrNode *)param->type, build, offset, offset2);
+ g_ir_node_build_typelib ((GIrNode *)param->type, node, build, offset, offset2);
}
break;
members = g_list_copy (struct_->members);
g_ir_node_build_members (&members, G_IR_NODE_FIELD, &blob->n_fields,
- build, offset, offset2);
+ node, build, offset, offset2);
g_ir_node_build_members (&members, G_IR_NODE_FUNCTION, &blob->n_methods,
- build, offset, offset2);
+ node, build, offset, offset2);
g_ir_node_check_unhandled_members (&members, node->type);
members = g_list_copy (boxed->members);
g_ir_node_build_members (&members, G_IR_NODE_FIELD, &blob->n_fields,
- build, offset, offset2);
+ node, build, offset, offset2);
g_ir_node_build_members (&members, G_IR_NODE_FUNCTION, &blob->n_methods,
- build, offset, offset2);
+ node, build, offset, offset2);
g_ir_node_check_unhandled_members (&members, node->type);
members = g_list_copy (union_->members);
g_ir_node_build_members (&members, G_IR_NODE_FIELD, &blob->n_fields,
- build, offset, offset2);
+ node, build, offset, offset2);
g_ir_node_build_members (&members, G_IR_NODE_FUNCTION, &blob->n_functions,
- build, offset, offset2);
+ node, build, offset, offset2);
g_ir_node_check_unhandled_members (&members, node->type);
{
GIrNode *member = (GIrNode *)l->data;
- g_ir_node_build_typelib (member, build, offset, offset2);
+ g_ir_node_build_typelib (member, node, build, offset, offset2);
}
}
}
GIrNode *value = (GIrNode *)l->data;
blob->n_values++;
- g_ir_node_build_typelib (value, build, offset, offset2);
+ g_ir_node_build_typelib (value, node, build, offset, offset2);
}
}
break;
*offset = ALIGN_VALUE (*offset, 4);
g_ir_node_build_members (&members, G_IR_NODE_FIELD, &blob->n_fields,
- build, offset, offset2);
+ node, build, offset, offset2);
*offset = ALIGN_VALUE (*offset, 4);
g_ir_node_build_members (&members, G_IR_NODE_PROPERTY, &blob->n_properties,
- build, offset, offset2);
+ node, build, offset, offset2);
*offset = ALIGN_VALUE (*offset, 4);
g_ir_node_build_members (&members, G_IR_NODE_FUNCTION, &blob->n_methods,
- build, offset, offset2);
+ node, build, offset, offset2);
*offset = ALIGN_VALUE (*offset, 4);
g_ir_node_build_members (&members, G_IR_NODE_SIGNAL, &blob->n_signals,
- build, offset, offset2);
+ node, build, offset, offset2);
*offset = ALIGN_VALUE (*offset, 4);
g_ir_node_build_members (&members, G_IR_NODE_VFUNC, &blob->n_vfuncs,
- build, offset, offset2);
+ node, build, offset, offset2);
*offset = ALIGN_VALUE (*offset, 4);
g_ir_node_build_members (&members, G_IR_NODE_CONSTANT, &blob->n_constants,
- build, offset, offset2);
+ node, build, offset, offset2);
g_ir_node_check_unhandled_members (&members, node->type);
*offset = ALIGN_VALUE (*offset, 4);
g_ir_node_build_members (&members, G_IR_NODE_PROPERTY, &blob->n_properties,
- build, offset, offset2);
+ node, build, offset, offset2);
*offset = ALIGN_VALUE (*offset, 4);
g_ir_node_build_members (&members, G_IR_NODE_FUNCTION, &blob->n_methods,
- build, offset, offset2);
+ node, build, offset, offset2);
*offset = ALIGN_VALUE (*offset, 4);
g_ir_node_build_members (&members, G_IR_NODE_SIGNAL, &blob->n_signals,
- build, offset, offset2);
+ node, build, offset, offset2);
*offset = ALIGN_VALUE (*offset, 4);
g_ir_node_build_members (&members, G_IR_NODE_VFUNC, &blob->n_vfuncs,
- build, offset, offset2);
+ node, build, offset, offset2);
*offset = ALIGN_VALUE (*offset, 4);
g_ir_node_build_members (&members, G_IR_NODE_CONSTANT, &blob->n_constants,
- build, offset, offset2);
+ node, build, offset, offset2);
g_ir_node_check_unhandled_members (&members, node->type);
}
*offset2 += ALIGN_VALUE (blob->size, 4);
- g_ir_node_build_typelib ((GIrNode *)constant->type, build, &pos, offset2);
+ g_ir_node_build_typelib ((GIrNode *)constant->type, node, build, &pos, offset2);
}
break;
default: