summaryrefslogtreecommitdiff
path: root/vapigen
diff options
context:
space:
mode:
authorJuerg Billeter <j@bitron.ch>2007-08-31 09:44:28 +0000
committerJürg Billeter <juergbi@src.gnome.org>2007-08-31 09:44:28 +0000
commit993a871767cee5204e5c8a23760dea052b60db66 (patch)
tree935ca875a4984ca2de5bda6e933695e18237d00b /vapigen
parent6804a07ce37f71d4e3920865e995f87cf57f9d50 (diff)
downloadvala-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.vala25
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) {