vala r1255 - in trunk: . gobject vala
- From: juergbi svn gnome org
- To: svn-commits-list gnome org
- Subject: vala r1255 - in trunk: . gobject vala
- Date: Fri, 18 Apr 2008 22:26:04 +0100 (BST)
Author: juergbi
Date: Fri Apr 18 21:26:04 2008
New Revision: 1255
URL: http://svn.gnome.org/viewvc/vala?rev=1255&view=rev
Log:
2008-04-18 Juerg Billeter <j bitron ch>
* vala/valaclass.vala, gobject/valaccodegeneratorclass.vala: make
sure that ref_function and unref_function of classes deriving
from GTypeInstance are always initialized
Modified:
trunk/ChangeLog
trunk/gobject/valaccodegeneratorclass.vala
trunk/vala/valaclass.vala
Modified: trunk/gobject/valaccodegeneratorclass.vala
==============================================================================
--- trunk/gobject/valaccodegeneratorclass.vala (original)
+++ trunk/gobject/valaccodegeneratorclass.vala Fri Apr 18 21:26:04 2008
@@ -238,9 +238,6 @@
source_type_member_definition.append (ref_fun);
source_type_member_definition.append (unref_fun);
-
- cl.set_ref_function (ref_fun.name);
- cl.set_unref_function (unref_fun.name);
}
} else if (!cl.is_static) {
var function = new CCodeFunction (cl.get_lower_case_cprefix () + "free", "void");
Modified: trunk/vala/valaclass.vala
==============================================================================
--- trunk/vala/valaclass.vala (original)
+++ trunk/vala/valaclass.vala Fri Apr 18 21:26:04 2008
@@ -598,8 +598,21 @@
public override bool is_reference_counting () {
return get_ref_function () != null;
}
-
+
+ bool is_fundamental () {
+ if (base_class != null
+ && base_class.name == "TypeInstance"
+ && base_class.parent_symbol.name == "GLib") {
+ return true;
+ }
+ return false;
+ }
+
public override string? get_ref_function () {
+ if (ref_function == null && is_fundamental ()) {
+ ref_function = get_lower_case_cprefix () + "ref";
+ }
+
if (ref_function == null && base_class != null) {
return base_class.get_ref_function ();
} else {
@@ -612,6 +625,10 @@
}
public override string? get_unref_function () {
+ if (unref_function == null && is_fundamental ()) {
+ unref_function = get_lower_case_cprefix () + "unref";
+ }
+
if (unref_function == null && base_class != null) {
return base_class.get_unref_function ();
} else {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]