type_param_index++;
}
}
- } else if (current_class.base_class == gsource_type) {
+ } else if (current_class.is_subtype_of (gsource_type)) {
// g_source_new
string class_prefix = get_ccode_lower_case_name (current_class);
}
}
- if (m is CreationMethod && m.parent_symbol is Class && ((current_class.is_compact && current_class.base_class != null) || current_class.base_class == gsource_type)) {
+ if (m is CreationMethod && m.parent_symbol is Class && ((current_class.is_compact && current_class.base_class != null) || current_class.is_subtype_of (gsource_type))) {
var cinitcall = new CCodeFunctionCall (new CCodeIdentifier ("%s_instance_init".printf (get_ccode_lower_case_name (current_class, null))));
cinitcall.add_argument (get_this_cexpression ());
if (!current_class.is_compact) {
bool is_gtypeinstance = !cl.is_compact;
bool is_fundamental = is_gtypeinstance && cl.base_class == null;
- bool is_gsource = cl.base_class == gsource_type;
+ bool is_gsource = cl.is_subtype_of (gsource_type);
if (is_gtypeinstance) {
decl_space.add_include ("glib-object.h");
begin_class_finalize_function (cl);
begin_finalize_function (cl);
} else {
- if (cl.is_compact || cl.base_class == null || cl.base_class == gsource_type) {
+ if (cl.is_compact || cl.base_class == null || cl.is_subtype_of (gsource_type)) {
begin_instance_init_function (cl);
begin_finalize_function (cl);
}
cfile.add_function (unref_fun);
}
} else {
- if (cl.is_compact || cl.base_class == null || cl.base_class == gsource_type) {
+ if (cl.is_compact || cl.base_class == null || cl.is_subtype_of (gsource_type)) {
add_instance_init_function (cl);
add_finalize_function (cl);
}
push_function (func);
- bool is_gsource = cl.base_class == gsource_type;
+ bool is_gsource = cl.is_subtype_of (gsource_type);
if (cl.is_compact) {
// Add declaration, since the instance_init function is explicitly called
private void begin_finalize_function (Class cl) {
push_context (instance_finalize_context);
- bool is_gsource = cl.base_class == gsource_type;
+ bool is_gsource = cl.is_subtype_of (gsource_type);
if (!cl.is_compact || is_gsource) {
var fundamental_class = cl;
pop_context ();
cfile.add_function (instance_finalize_context.ccode);
- } else if (cl.base_class == gsource_type) {
+ } else if (cl.is_subtype_of (gsource_type)) {
cfile.add_function (instance_finalize_context.ccode);
}
}