diff options
author | Juerg Billeter <j@bitron.ch> | 2007-08-31 09:44:28 +0000 |
---|---|---|
committer | Jürg Billeter <juergbi@src.gnome.org> | 2007-08-31 09:44:28 +0000 |
commit | 993a871767cee5204e5c8a23760dea052b60db66 (patch) | |
tree | 935ca875a4984ca2de5bda6e933695e18237d00b /vapigen | |
parent | 6804a07ce37f71d4e3920865e995f87cf57f9d50 (diff) | |
download | vala-993a871767cee5204e5c8a23760dea052b60db66.tar.gz |
use G_TYPE_POINTER for not registered classes, add has_type_id attribute
2007-08-31 Juerg Billeter <j@bitron.ch>
* vala/valaclass.vala, vala/valastruct.vala: use G_TYPE_POINTER for
not registered classes, add has_type_id attribute
* vapigen/valagidlparser.vala: use GLib.Boxed as base type of boxed
types
* vapi/glib-2.0.vala: use has_type_id attribute and GLib.Boxed
* vapi/gconf-2.0.vala, vapi/gdk-2.0.vala, vapi/gnome-desktop-2.0.vala,
vapi/gnome-vfs-2.0.vala, vapi/gstreamer-0.10.vala, vapi/gtk+-2.0.vala,
vapi/libglade-2.0.vala, vapi/libgnome-2.0.vala, vapi/libsoup-2.2.vala,
vapi/pango.vala, vapi/poppler-glib.vala: regenerated
svn path=/trunk/; revision=550
Diffstat (limited to 'vapigen')
-rw-r--r-- | vapigen/valagidlparser.vala | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index 5f68062bb..08eff31b0 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -342,6 +342,7 @@ public class Vala.GIdlParser : CodeVisitor { string ref_function = null; string unref_function = null; + string copy_function = null; string free_function = null; foreach (weak IdlNode member in st_node.members) { @@ -350,9 +351,12 @@ public class Vala.GIdlParser : CodeVisitor { ref_function = ((IdlNodeFunction) member).symbol; } else if (member.name == "unref") { unref_function = ((IdlNodeFunction) member).symbol; - } else if (member.name == "free") { + } else if (member.name == "free" || member.name == "destroy") { free_function = ((IdlNodeFunction) member).symbol; } else { + if (member.name == "copy") { + copy_function = ((IdlNodeFunction) member).symbol; + } var m = parse_function ((IdlNodeFunction) member); if (m != null) { cl.add_method (m); @@ -369,6 +373,9 @@ public class Vala.GIdlParser : CodeVisitor { if (ref_function != null) { cl.set_ref_function (ref_function); } + if (copy_function != null) { + cl.set_dup_function (copy_function); + } if (unref_function != null) { cl.set_unref_function (unref_function); } else if (free_function != null) { @@ -442,11 +449,17 @@ public class Vala.GIdlParser : CodeVisitor { cl.set_type_id (cl.get_upper_case_cname ("TYPE_")); current_source_file.add_node (cl); } - + + var parent = new TypeReference (); + parent.namespace_name = "GLib"; + parent.type_name = "Boxed"; + cl.add_base_type (parent); + current_data_type = cl; string ref_function = null; string unref_function = null; + string copy_function = null; string free_function = null; foreach (weak IdlNode member in boxed_node.members) { @@ -455,9 +468,12 @@ public class Vala.GIdlParser : CodeVisitor { ref_function = ((IdlNodeFunction) member).symbol; } else if (member.name == "unref") { unref_function = ((IdlNodeFunction) member).symbol; - } else if (member.name == "free") { + } else if (member.name == "free" || member.name == "destroy") { free_function = ((IdlNodeFunction) member).symbol; } else { + if (member.name == "copy") { + copy_function = ((IdlNodeFunction) member).symbol; + } var m = parse_function ((IdlNodeFunction) member); if (m != null) { cl.add_method (m); @@ -474,6 +490,9 @@ public class Vala.GIdlParser : CodeVisitor { if (ref_function != null) { cl.set_ref_function (ref_function); } + if (copy_function != null) { + cl.set_dup_function (copy_function); + } if (unref_function != null) { cl.set_unref_function (unref_function); } else if (free_function != null) { |