[evolution-data-server] vala: Add custom overrides for e_contact_[get|get_const|set]()



commit 3b4d6180fba2190541053d047ceeaecbae702e26
Author: Philip Withnall <philip tecnocode co uk>
Date:   Mon Jun 25 21:43:35 2012 +0100

    vala: Add custom overrides for e_contact_[get|get_const|set]()
    
    They were using void* in Vala, which is generally a bad idea. In this case,
    it was resulting in unavoidable memory leaks in libfolks (bug #678781).
    
    This changes the functions to be simple generics instead.

 vala/EBook-1.2.metadata       |    3 +++
 vala/Makefile.am              |    4 +++-
 vala/libebook-1.2-custom.vala |   12 ++++++++++++
 3 files changed, 18 insertions(+), 1 deletions(-)
---
diff --git a/vala/EBook-1.2.metadata b/vala/EBook-1.2.metadata
index 0a46e29..a1ec350 100644
--- a/vala/EBook-1.2.metadata
+++ b/vala/EBook-1.2.metadata
@@ -4,6 +4,9 @@ BookView.contacts_changed#signal.object type="GLib.List<weak void*>"
 BookClientView.objects_added#signal.object type="GLib.List<weak void*>"
 BookClientView.objects_removed#signal.object type="GLib.List<weak void*>"
 BookClientView.objects_modified#signal.object type="GLib.List<weak void*>"
+Contact.get skip
+Contact.get_const skip
+Contact.set skip
 ContactName.family unowned=false
 ContactName.given unowned=false
 ContactName.additional unowned=false
diff --git a/vala/Makefile.am b/vala/Makefile.am
index 3c35ede..33928f4 100644
--- a/vala/Makefile.am
+++ b/vala/Makefile.am
@@ -11,6 +11,7 @@ dist_vapi_DATA = \
 
 EXTRA_DIST = \
 	EBook-1.2.metadata \
+	libebook-1.2-custom.vala \
 	ECalendar-1.2.metadata \
 	EDataServer-1.2.metadata \
 	$(NULL)
@@ -48,7 +49,7 @@ libecalendar-1.2.vapi: $(top_builddir)/calendar/libecal/ECalendar-1.2.gir libeda
 		$< \
 		$(NULL)
 
-libebook-1.2.vapi: $(top_builddir)/addressbook/libebook/EBook-1.2.gir libedataserver-1.2.vapi
+libebook-1.2.vapi: $(top_builddir)/addressbook/libebook/EBook-1.2.gir libedataserver-1.2.vapi libebook-1.2-custom.vala
 	$(VAPIGEN_V)$(VAPIGEN) \
 		--vapidir=. \
 		--girdir=$(top_builddir)/libedataserver \
@@ -57,6 +58,7 @@ libebook-1.2.vapi: $(top_builddir)/addressbook/libebook/EBook-1.2.gir libedatase
 		--library libebook-1.2 \
 		--metadatadir=$(srcdir) \
 		$< \
+		libebook-1.2-custom.vala \
 		$(NULL)
 
 CLEANFILES = \
diff --git a/vala/libebook-1.2-custom.vala b/vala/libebook-1.2-custom.vala
new file mode 100644
index 0000000..8e6937f
--- /dev/null
+++ b/vala/libebook-1.2-custom.vala
@@ -0,0 +1,12 @@
+/* Custom vapi needed because bgo#666797 prevents generics being exposed in the .metadata file. */
+namespace E {
+	[CCode (type_id = "e_contact_get_type ()")]
+	public class Contact : E.VCard {
+		[CCode (simple_generics = true)]
+		public T? @get<T> (E.ContactField field_id);
+		[CCode (simple_generics = true)]
+		public unowned T? get_const<T> (E.ContactField field_id);
+		[CCode (simple_generics = true)]
+		public void @set<T> (E.ContactField field_id, T value);
+	}
+}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]