Esempio n. 1
0
        public override void get_type_interface_init_statements(CCodeBlock block, bool plugin)
        {
            foreach (DataType base_type in class_reference.get_base_types())
            {
                if (!(base_type.data_type is Interface))
                {
                    continue;
                }

                var iface = (Interface)base_type.data_type;

                var iface_info_name = "%s_info".printf(CCodeBaseModule.get_ccode_lower_case_name(iface, null));
                if (!plugin)
                {
                    var reg_call = new CCodeFunctionCall(new CCodeIdentifier("g_type_add_interface_static"));
                    reg_call.add_argument(new CCodeIdentifier("%s_type_id".printf(CCodeBaseModule.get_ccode_lower_case_name(class_reference, null))));
                    reg_call.add_argument(new CCodeIdentifier(CCodeBaseModule.get_ccode_type_id(iface)));
                    reg_call.add_argument(new CCodeIdentifier("&%s".printf(iface_info_name)));
                    block.add_statement(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(CCodeBaseModule.get_ccode_lower_case_name(class_reference, null))));
                    reg_call.add_argument(new CCodeIdentifier(CCodeBaseModule.get_ccode_type_id(iface)));
                    reg_call.add_argument(new CCodeIdentifier("&%s".printf(iface_info_name)));
                    block.add_statement(new CCodeExpressionStatement(reg_call));
                }
            }

            ((CCodeBaseModule)context.codegen).register_dbus_info(block, class_reference);
        }
        public override void get_type_interface_init_statements(CCodeBlock block, bool plugin)
        {
            /* register all prerequisites */
            foreach (DataType prereq_ref in interface_reference.get_prerequisites())
            {
                var prereq = prereq_ref.data_type;

                var func = new CCodeFunctionCall(new CCodeIdentifier("g_type_interface_add_prerequisite"));
                func.add_argument(new CCodeIdentifier("%s_type_id".printf(CCodeBaseModule.get_ccode_lower_case_name(interface_reference))));
                func.add_argument(new CCodeIdentifier(CCodeBaseModule.get_ccode_type_id(prereq)));

                block.add_statement(new CCodeExpressionStatement(func));
            }

            ((CCodeBaseModule)context.codegen).register_dbus_info(block, interface_reference);
        }
Esempio n. 3
0
 public override string get_parent_type_name()
 {
     return(CCodeBaseModule.get_ccode_type_id(class_reference.base_class));
 }