Fixes bug 601343.
return frag;
}
- public override CCodeFragment get_type_interface_init_statements () {
+ public override CCodeFragment get_type_interface_init_statements (bool plugin) {
var frag = new CCodeFragment ();
foreach (DataType base_type in class_reference.get_base_types ()) {
var iface = (Interface) base_type.data_type;
var iface_info_name = "%s_info".printf (iface.get_lower_case_cname (null));
-
- var reg_call = new CCodeFunctionCall (new CCodeIdentifier ("g_type_add_interface_static"));
- reg_call.add_argument (new CCodeIdentifier ("%s_type_id".printf (class_reference.get_lower_case_cname (null))));
- reg_call.add_argument (new CCodeIdentifier (iface.get_type_id ()));
- reg_call.add_argument (new CCodeIdentifier ("&%s".printf (iface_info_name)));
- frag.append (new CCodeExpressionStatement (reg_call));
+ if (!plugin) {
+ var reg_call = new CCodeFunctionCall (new CCodeIdentifier ("g_type_add_interface_static"));
+ reg_call.add_argument (new CCodeIdentifier ("%s_type_id".printf (class_reference.get_lower_case_cname (null))));
+ reg_call.add_argument (new CCodeIdentifier (iface.get_type_id ()));
+ reg_call.add_argument (new CCodeIdentifier ("&%s".printf (iface_info_name)));
+ frag.append (new CCodeExpressionStatement (reg_call));
+ } else {
+ var reg_call = new CCodeFunctionCall (new CCodeIdentifier ("g_type_module_add_interface"));
+ reg_call.add_argument (new CCodeIdentifier ("module"));
+ reg_call.add_argument (new CCodeIdentifier ("%s_type_id".printf (class_reference.get_lower_case_cname (null))));
+ reg_call.add_argument (new CCodeIdentifier (iface.get_type_id ()));
+ reg_call.add_argument (new CCodeIdentifier ("&%s".printf (iface_info_name)));
+ frag.append (new CCodeExpressionStatement (reg_call));
+ }
}
return frag;
base(iface, context);
}
- public override CCodeFragment get_type_interface_init_statements () {
- var frag = base.get_type_interface_init_statements ();
+ public override CCodeFragment get_type_interface_init_statements (bool plugin) {
+ var frag = base.get_type_interface_init_statements (plugin);
var quark_dbus_proxy = new CCodeFunctionCall (new CCodeIdentifier ("g_quark_from_string"));
quark_dbus_proxy.add_argument (new CCodeConstant ("\"ValaDBusInterfaceProxyType\""));
decl_space.add_type_definition (type_struct);
var type_fun = create_interface_register_function (iface);
- type_fun.init_from_type ();
+ type_fun.init_from_type (in_plugin);
decl_space.add_type_member_declaration (type_fun.get_declaration ());
}
add_interface_base_init_function (iface);
var type_fun = create_interface_register_function (iface);
- type_fun.init_from_type ();
+ type_fun.init_from_type (in_plugin);
+ source_declarations.add_type_member_declaration (type_fun.get_source_declaration ());
source_type_member_definition.append (type_fun.get_definition ());
current_symbol = old_symbol;
return interface_reference.access;
}
- public override CCodeFragment get_type_interface_init_statements () {
+ public override CCodeFragment get_type_interface_init_statements (bool plugin) {
var frag = new CCodeFragment ();
/* register all prerequisites */
return struct_reference.access;
}
- public override CCodeFragment get_type_interface_init_statements () {
+ public override CCodeFragment get_type_interface_init_statements (bool plugin) {
return new CCodeFragment ();
}
}
/**
* Constructs the C function from the specified type.
*/
- public void init_from_type (bool plugin = false) {
+ public void init_from_type (bool plugin) {
bool use_thread_safe = context.require_glib_version (2, 14);
bool fundamental = false;
type_init.add_statement (new CCodeExpressionStatement (new CCodeAssignment (new CCodeIdentifier (type_id_name), reg_call)));
}
- type_init.add_statement (get_type_interface_init_statements ());
+ type_init.add_statement (get_type_interface_init_statements (plugin));
if (!plugin) {
CCodeExpression condition; // the condition that guards the type initialisation
*
* @return C statements
*/
- public abstract CCodeFragment get_type_interface_init_statements ();
+ public abstract CCodeFragment get_type_interface_init_statements (bool plugin);
public CCodeFragment get_source_declaration () {
return source_declaration_fragment;