[gmime] Improved GMime.HeaderList C# API
- From: Jeffrey Stedfast <fejj src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gmime] Improved GMime.HeaderList C# API
- Date: Sun, 14 Aug 2011 23:58:34 +0000 (UTC)
commit 7bf5f13e4b6cbaa736f4fbe9c61373be7d2e0719
Author: Jeffrey Stedfast <fejj gnome org>
Date: Sun Aug 14 19:57:59 2011 -0400
Improved GMime.HeaderList C# API
2011-08-14 Jeffrey Stedfast <fejj gnome org>
* mono/GMime.metadata: Rename AppendHeader() to Append(),
PrependHeader() to Prepend(), RemoveHeader() to Remove(), etc.
* mono/HeaderList.custom: Instead of having
GetHeader()/SetHeader(), manually bind this as an indexer.
* gmime/gmime-header.c (g_mime_header_list_clear): New function
to clear all headers.
(g_mime_header_list_contains): New function added mostly for
completeness in the C# binding.
ChangeLog | 13 +++++++++
docs/reference/gmime-sections.txt | 2 +
gmime/gmime-header.c | 50 +++++++++++++++++++++++++++++++++++++
gmime/gmime-header.h | 2 +
mono/GMime.metadata | 7 +---
mono/HeaderList.custom | 31 +++++++++++++++++++++++
mono/Message.custom | 2 +-
mono/gmime-api.raw | 12 +++++++++
8 files changed, 113 insertions(+), 6 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index a3a9235..7f20169 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
2011-08-14 Jeffrey Stedfast <fejj gnome org>
+ * mono/GMime.metadata: Rename AppendHeader() to Append(),
+ PrependHeader() to Prepend(), RemoveHeader() to Remove(), etc.
+
+ * mono/HeaderList.custom: Instead of having
+ GetHeader()/SetHeader(), manually bind this as an indexer.
+
+ * gmime/gmime-header.c (g_mime_header_list_clear): New function
+ to clear all headers.
+ (g_mime_header_list_contains): New function added mostly for
+ completeness in the C# binding.
+
+2011-08-14 Jeffrey Stedfast <fejj gnome org>
+
* README: Bumped version
* configure.ac: Bumped version to 2.5.10
diff --git a/docs/reference/gmime-sections.txt b/docs/reference/gmime-sections.txt
index 2c7ecbc..c771bdd 100644
--- a/docs/reference/gmime-sections.txt
+++ b/docs/reference/gmime-sections.txt
@@ -597,6 +597,8 @@ g_mime_header_iter_set_value
g_mime_header_iter_remove
g_mime_header_list_new
g_mime_header_list_destroy
+g_mime_header_list_clear
+g_mime_header_list_contains
g_mime_header_list_prepend
g_mime_header_list_append
g_mime_header_list_remove
diff --git a/gmime/gmime-header.c b/gmime/gmime-header.c
index f67cf6d..0639e65 100644
--- a/gmime/gmime-header.c
+++ b/gmime/gmime-header.c
@@ -578,6 +578,56 @@ g_mime_header_list_destroy (GMimeHeaderList *headers)
/**
+ * g_mime_header_list_clear:
+ * @headers: a #GMimeHeaderList
+ *
+ * Removes all of the headers from the #GMimeHeaderList.
+ **/
+void
+g_mime_header_list_clear (GMimeHeaderList *headers)
+{
+ GMimeHeader *header, *next;
+
+ g_return_if_fail (headers != NULL);
+
+ header = (GMimeHeader *) headers->list.head;
+ while (header->next) {
+ next = header->next;
+ g_mime_header_free (header);
+ header = next;
+ }
+
+ g_hash_table_remove_all (headers->hash);
+
+ g_mime_header_list_set_stream (headers, NULL);
+}
+
+
+/**
+ * g_mime_header_list_contains:
+ * @headers: a #GMimeHeaderList
+ * @name: header name
+ *
+ * Checks whether or not a header exists.
+ *
+ * Returns: %TRUE if the specified header exists or %FALSE otherwise.
+ **/
+gboolean
+g_mime_header_list_contains (const GMimeHeaderList *headers, const char *name)
+{
+ const GMimeHeader *header;
+
+ g_return_val_if_fail (headers != NULL, FALSE);
+ g_return_val_if_fail (name != NULL, FALSE);
+
+ if (!(header = g_hash_table_lookup (headers->hash, name)))
+ return FALSE;
+
+ return TRUE;
+}
+
+
+/**
* g_mime_header_list_prepend:
* @headers: a #GMimeHeaderList
* @name: header name
diff --git a/gmime/gmime-header.h b/gmime/gmime-header.h
index bc71242..836722a 100644
--- a/gmime/gmime-header.h
+++ b/gmime/gmime-header.h
@@ -112,6 +112,8 @@ void g_mime_header_list_destroy (GMimeHeaderList *headers);
void g_mime_header_list_set_stream (GMimeHeaderList *headers, GMimeStream *stream);
GMimeStream *g_mime_header_list_get_stream (GMimeHeaderList *headers);
+void g_mime_header_list_clear (GMimeHeaderList *headers);
+gboolean g_mime_header_list_contains (const GMimeHeaderList *headers, const char *name);
void g_mime_header_list_prepend (GMimeHeaderList *headers, const char *name, const char *value);
void g_mime_header_list_append (GMimeHeaderList *headers, const char *name, const char *value);
void g_mime_header_list_set (GMimeHeaderList *headers, const char *name, const char *value);
diff --git a/mono/GMime.metadata b/mono/GMime.metadata
index 127731e..10d5968 100644
--- a/mono/GMime.metadata
+++ b/mono/GMime.metadata
@@ -189,11 +189,8 @@
<remove-node path="/api/namespace/struct[ cname='GMimeHeaderList']/method[ cname='g_mime_header_list_foreach']"/>
<attr path="/api/namespace/struct[ cname='GMimeHeaderList']/method[ name='SetStream']" name="hidden">true</attr>
<attr path="/api/namespace/struct[ cname='GMimeHeaderList']/method[ name='GetStream']" name="hidden">true</attr>
- <attr path="/api/namespace/struct[ cname='GMimeHeaderList']/method[ name='Prepend']" name="name">PrependHeader</attr>
- <attr path="/api/namespace/struct[ cname='GMimeHeaderList']/method[ name='Append']" name="name">AppendHeader</attr>
- <attr path="/api/namespace/struct[ cname='GMimeHeaderList']/method[ name='Remove']" name="name">RemoveHeader</attr>
- <attr path="/api/namespace/struct[ cname='GMimeHeaderList']/method[ name='Set']" name="name">SetHeader</attr>
- <attr path="/api/namespace/struct[ cname='GMimeHeaderList']/method[ name='Get']" name="name">GetHeader</attr>
+ <remove-node path="/api/namespace/struct[ cname='GMimeHeaderList']/method[ name='Get']"/>
+ <remove-node path="/api/namespace/struct[ cname='GMimeHeaderList']/method[ name='Set']"/>
<attr path="/api/namespace/struct[ cname='GMimeHeaderList']/method[ name='GetIter']/*/parameter[ name='iter']" name="pass_as">out</attr>
<attr path="/api/namespace/struct[ cname='GMimeHeaderIter']/method[ name='SetValue']/return-type" name="type">void</attr>
<attr path="/api/namespace/struct[ cname='GMimeHeaderIter']" name="opaque">true</attr>
diff --git a/mono/HeaderList.custom b/mono/HeaderList.custom
index 07280d6..048a83d 100644
--- a/mono/HeaderList.custom
+++ b/mono/HeaderList.custom
@@ -1,3 +1,34 @@
+ [DllImport ("gmime")]
+ static extern IntPtr g_mime_header_list_set (IntPtr raw, IntPtr name, IntPtr value);
+
+ [DllImport ("gmime")]
+ static extern IntPtr g_mime_header_list_get (IntPtr raw, IntPtr name);
+
+ public string this[string name] {
+ get {
+ if (name == null)
+ throw new ArgumentNullException ("name");
+
+ IntPtr native_name = GLib.Marshaller.StringToPtrGStrdup (name);
+ IntPtr raw_ret = g_mime_header_list_get (Handle, native_name);
+ string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
+ GLib.Marshaller.Free (native_name);
+
+ return ret;
+ }
+
+ set {
+ if (name == null)
+ throw new ArgumentNullException ("name");
+
+ IntPtr native_name = GLib.Marshaller.StringToPtrGStrdup (name);
+ IntPtr native_value = GLib.Marshaller.StringToPtrGStrdup (value);
+ g_mime_header_list_set (Handle, native_name, native_value);
+ GLib.Marshaller.Free (native_value);
+ GLib.Marshaller.Free (native_name);
+ }
+ }
+
public StreamWrapper Stream {
get {
GMime.StreamMem mem_stream = new GMime.StreamMem ();
diff --git a/mono/Message.custom b/mono/Message.custom
index 9a76338..573f38f 100644
--- a/mono/Message.custom
+++ b/mono/Message.custom
@@ -27,7 +27,7 @@
if (headers == null)
yield break;
- string references = headers.GetHeader ("References");
+ string references = headers["References"];
if (references == null)
yield break;
diff --git a/mono/gmime-api.raw b/mono/gmime-api.raw
index 053e24c..a906d8b 100644
--- a/mono/gmime-api.raw
+++ b/mono/gmime-api.raw
@@ -2808,6 +2808,15 @@
<parameter type="const-char*" name="value" />
</parameters>
</method>
+ <method name="Clear" cname="g_mime_header_list_clear">
+ <return-type type="void" />
+ </method>
+ <method name="Contains" cname="g_mime_header_list_contains">
+ <return-type type="gboolean" />
+ <parameters>
+ <parameter type="const-char*" name="name" />
+ </parameters>
+ </method>
<method name="Destroy" cname="g_mime_header_list_destroy">
<return-type type="void" />
</method>
@@ -2938,6 +2947,9 @@
<method name="GetPath" cname="g_mime_part_iter_get_path">
<return-type type="char*" />
</method>
+ <method name="GetToplevel" cname="g_mime_part_iter_get_toplevel">
+ <return-type type="GMimeObject*" />
+ </method>
<method name="IsValid" cname="g_mime_part_iter_is_valid">
<return-type type="gboolean" />
</method>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]