write_indent ();
write_string ("[ReturnsModifiedPointer]");
}
+ if (m.get_attribute ("DestroysInstance") != null) {
+ write_indent ();
+ write_string ("[DestroysInstance]");
+ }
if (m.printf_format) {
write_indent ();
write_string ("[PrintfFormat]");
if (instance && inner == null) {
inner = new MemberAccess (null, "this", source_reference);
inner.value_type = this_parameter.variable_type.copy ();
+ inner.value_type.value_owned = false;
inner.symbol_reference = this_parameter;
}
if (instance && base_method.parent_symbol is TypeSymbol) {
inner.target_type = context.analyzer.get_data_type_for_symbol ((TypeSymbol) base_method.parent_symbol);
+ inner.target_type.value_owned = base_method.this_parameter.variable_type.value_owned;
}
} else if (symbol_reference is Property) {
var prop = (Property) symbol_reference;
get_error_types ().clear ();
} else if (a.name == "Experimental") {
process_experimental_attribute (a);
+ } else if (a.name == "DestroysInstance") {
+ this_parameter.variable_type.value_owned = true;
}
}
}
public void coords_to_parent (double x, double y, double parent_x, double parent_y);
public unowned Cairo.Surface create_similar_surface (Cairo.Content content, int width, int height);
public void deiconify ();
+ [DestroysInstance]
public void destroy ();
public void enable_synchronized_configure ();
public void end_paint ();
gdk_window_at_pointer.win_y is_out="1"
gdk_window_constrain_size.new_width is_out="1"
gdk_window_constrain_size.new_height is_out="1"
+gdk_window_destroy destroys_instance="1"
gdk_window_get_decorations.decorations is_out="1"
gdk_window_get_deskrelative_origin.x is_out="1"
gdk_window_get_deskrelative_origin.y is_out="1"
if (eval (nv[1]) == "1") {
return_type.value_owned = true;
}
+ } else if (nv[0] == "destroys_instance") {
+ if (eval (nv[1]) == "1") {
+ m.attributes.append (new Attribute ("DestroysInstance", m.source_reference));
+ }
} else if (nv[0] == "nullable") {
if (eval (nv[1]) == "1") {
return_type.nullable = true;