f-spot r4653 - in trunk: . GKeyFile GKeyFile/generated



Author: sdelcroix
Date: Thu Dec  4 12:39:26 2008
New Revision: 4653
URL: http://svn.gnome.org/viewvc/f-spot?rev=4653&view=rev

Log:
GKeyFile

2008-12-04  Stephane Delcroix  <sdelcroix novell com>

	* GKeyFile/*: bindings for GKeyFile. Will be useful to implement a
	proper alternative to the GConf preference backend

Added:
   trunk/GKeyFile/
   trunk/GKeyFile/.generated_timestamp
   trunk/GKeyFile/.gitignore
   trunk/GKeyFile/GKeyFile.custom
   trunk/GKeyFile/GKeyFile.metadata
   trunk/GKeyFile/Makefile.am
   trunk/GKeyFile/generated/
   trunk/GKeyFile/generated/Error.cs
   trunk/GKeyFile/generated/Flags.cs
   trunk/GKeyFile/generated/GKeyFile.cs
   trunk/GKeyFile/gkeyfile-api.raw
   trunk/GKeyFile/gkeyfile-api.xml
   trunk/GKeyFile/gkeyfile-sharp-sources.xml
   trunk/GKeyFile/sample.cs
Modified:
   trunk/ChangeLog
   trunk/Makefile.am
   trunk/configure.in

Added: trunk/GKeyFile/.generated_timestamp
==============================================================================

Added: trunk/GKeyFile/.gitignore
==============================================================================
--- (empty file)
+++ trunk/GKeyFile/.gitignore	Thu Dec  4 12:39:26 2008
@@ -0,0 +1,3 @@
+/Makefile
+/Makefile.in
+/gkeyfile-sharp.dll*

Added: trunk/GKeyFile/GKeyFile.custom
==============================================================================
--- (empty file)
+++ trunk/GKeyFile/GKeyFile.custom	Thu Dec  4 12:39:26 2008
@@ -0,0 +1,98 @@
+/*
+ * GKeyFile.custom
+ *
+ * Author(s):
+ *	Stephane Delcroix  (stephane delcroix org)
+ *
+ * Copyright (c) 2008 Novell, Inc.
+ *
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+	public GKeyFile (string file, KeyFile.Flags flags) : this ()
+	{
+		LoadFromFile (file, flags);
+	}
+
+	public GKeyFile (string file) : this (file, KeyFile.Flags.KeepComments)
+	{
+	}
+
+	public string ToData ()
+	{
+		ulong length;
+		return ToData (out length);
+	}
+
+	public void Save (string filename)
+	{
+		byte [] content = System.Text.Encoding.Default.GetBytes (ToData ());
+		System.IO.FileStream stream = System.IO.File.Create (filename);
+		stream.Write (content, 0, content.Length);
+		stream.Close ();
+	}
+	
+	public void SetStringList(string group_name, string key, string[] list) {
+		SetStringList (group_name, key, list, (ulong)list.Length);
+	}
+
+	public void SetBooleanList(string group_name, string key, bool[] list) {
+		SetBooleanList(group_name, key, list, (ulong)list.Length);
+	}
+	
+	public void SetIntegerList(string group_name, string key, int[] list) {
+		SetIntegerList (group_name, key, list, (ulong)list.Length);
+	}
+
+	public void SetDoubleList(string group_name, string key, double[] list) {
+		SetDoubleList (group_name, key, list, (ulong)list.Length);
+	}
+
+	public string [] GetKeys (string group_name) {
+		ulong length;
+		return GetKeys (group_name, out length);
+	}
+
+	public string [] GetGroups () {
+		ulong length;
+		return GetGroups (out length);
+	}
+
+	public string[] GetStringList(string group_name, string key) {
+		ulong length;
+		return GetStringList (group_name, key, out length);
+	}
+
+//	public bool[] GetBooleanList(string group_name, string key) {
+//		ulong length;
+//		return GetBooleanList (group_anme, key, out length);
+//	}
+//	
+//	public int[] GetIntegerList(string group_name, string key) {
+//		ulong length;
+//		return GetIntegerList (group_name, key, out length);
+//	}
+//
+//	public double[] GetDoubleList(string group_name, string key) {
+//		ulong length;
+//		return GetDoubleList (group_name, key, out length);
+//	}

Added: trunk/GKeyFile/GKeyFile.metadata
==============================================================================
--- (empty file)
+++ trunk/GKeyFile/GKeyFile.metadata	Thu Dec  4 12:39:26 2008
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<metadata>
+  <attr		path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_to_data']" name="accessibility">private</attr>
+  <attr		path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_set_string_list']" name="accessibility">private</attr>
+  <attr		path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_set_integer_list']" name="accessibility">private</attr>
+  <attr		path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_set_double_list']" name="accessibility">private</attr>
+  <attr		path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_set_boolean_list']" name="accessibility">private</attr>
+  <attr 	path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_get_keys']" name="accessibility">private</attr> 
+  <attr 	path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_get_keys']/return-type" name="null_term_array">1</attr> 
+  <attr 	path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_get_groups']" name="accessibility">private</attr> 
+  <attr 	path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_get_groups']/return-type" name="null_term_array">1</attr> 
+  <attr 	path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_get_string_list']" name="accessibility">private</attr> 
+  <attr 	path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_get_string_list']/return-type" name="null_term_array">1</attr> 
+  <attr 	path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_get_locale_string_list']/return-type" name="null_term_array">1</attr> 
+<!--
+  <attr 	path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_get_boolean_list']" name="accessibility">private</attr> 
+  <attr 	path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_get_boolean_list']/return-type" name="element_type">gboolean</attr> 
+  <attr 	path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_get_integer_list']" name="accessibility">private</attr> 
+  <attr 	path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_get_integer_list']/return-type" name="null_term_array">1</attr> 
+  <attr 	path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_get_double_list']" name="accessibility">private</attr> 
+  <attr 	path="/api/namespace/struct[ cname='GKeyFile']/method[ cname='g_key_file_get_double_list']/return-type" name="null_term_array">1</attr>
+-->
+</metadata>

Added: trunk/GKeyFile/Makefile.am
==============================================================================
--- (empty file)
+++ trunk/GKeyFile/Makefile.am	Thu Dec  4 12:39:26 2008
@@ -0,0 +1,32 @@
+all: gkeyfile-sharp.dll
+
+gkeyfile-api.raw: gkeyfile-sharp-sources.xml
+	gapi2-parser gkeyfile-sharp-sources.xml
+
+gkeyfile-api.xml: gkeyfile-api.raw GKeyFile.metadata
+	cp gkeyfile-api.raw gkeyfile-api.xml
+	gapi2-fixup --api=gkeyfile-api.xml --metadata=GKeyFile.metadata
+
+.generated_timestamp: gkeyfile-api.xml $(CUSTOMS)
+	gapi2-codegen --outdir=generated --customdir=$(srcdir) --generate gkeyfile-api.xml
+	touch $@
+
+gkeyfile-sharp.dll: .generated_timestamp $(SOURCES) $(CUSTOMS)
+	gmcs -unsafe -pkg:glib-sharp-2.0 -target:library -out:$@ $(srcdir)/generated/*.cs $(SOURCES)
+
+CUSTOMS =				\
+	$(srcdir)/GKeyFile.custom
+	
+EXTRA_DIST =				\
+	$(CUSTOMS)			\
+	gkeyfile-sharp-sources.xml	\
+	gkeyfile-api.raw		\
+	GKeyFile.metadata		\
+	gkeyfile-api.xml		\
+	.generated_timestamp		\
+	generated/*.cs
+
+CLEANFILES =				\
+	gkeyfile-sharp.dll		\
+	gkeyfile-sharp.dll.mdb
+

Added: trunk/GKeyFile/generated/Error.cs
==============================================================================
--- (empty file)
+++ trunk/GKeyFile/generated/Error.cs	Thu Dec  4 12:39:26 2008
@@ -0,0 +1,20 @@
+// This file was generated by the Gtk# code generator.
+// Any changes made will be lost if regenerated.
+
+namespace KeyFile {
+
+	using System;
+	using System.Runtime.InteropServices;
+
+#region Autogenerated code
+	public enum Error {
+
+		UnknownEncoding,
+		Parse,
+		NotFound,
+		KeyNotFound,
+		GroupNotFound,
+		InvalidValue,
+	}
+#endregion
+}

Added: trunk/GKeyFile/generated/Flags.cs
==============================================================================
--- (empty file)
+++ trunk/GKeyFile/generated/Flags.cs	Thu Dec  4 12:39:26 2008
@@ -0,0 +1,18 @@
+// This file was generated by the Gtk# code generator.
+// Any changes made will be lost if regenerated.
+
+namespace KeyFile {
+
+	using System;
+	using System.Runtime.InteropServices;
+
+#region Autogenerated code
+	[Flags]
+	public enum Flags {
+
+		None,
+		KeepComments = 1 << 0,
+		KeepTranslations = 1 << 1,
+	}
+#endregion
+}

Added: trunk/GKeyFile/generated/GKeyFile.cs
==============================================================================
--- (empty file)
+++ trunk/GKeyFile/generated/GKeyFile.cs	Thu Dec  4 12:39:26 2008
@@ -0,0 +1,684 @@
+// This file was generated by the Gtk# code generator.
+// Any changes made will be lost if regenerated.
+
+namespace KeyFile {
+
+	using System;
+	using System.Collections;
+	using System.Runtime.InteropServices;
+
+#region Autogenerated code
+	public class GKeyFile : GLib.Opaque {
+
+		[DllImport("libglib-2.0.dll")]
+		static extern IntPtr g_key_file_get_groups(IntPtr raw, out UIntPtr length);
+
+		private string[] GetGroups(out ulong length) {
+			UIntPtr native_length;
+			IntPtr raw_ret = g_key_file_get_groups(Handle, out native_length);
+			string[] ret = GLib.Marshaller.NullTermPtrToStringArray (raw_ret, false);
+			length = (ulong) native_length;
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern void g_key_file_set_boolean(IntPtr raw, IntPtr group_name, IntPtr key, bool value);
+
+		public void SetBoolean(string group_name, string key, bool value) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			g_key_file_set_boolean(Handle, native_group_name, native_key, value);
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe IntPtr g_key_file_get_locale_string(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr locale, out IntPtr error);
+
+		public unsafe string GetLocaleString(string group_name, string key, string locale) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			IntPtr native_locale = GLib.Marshaller.StringToPtrGStrdup (locale);
+			IntPtr error = IntPtr.Zero;
+			IntPtr raw_ret = g_key_file_get_locale_string(Handle, native_group_name, native_key, native_locale, out error);
+			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			GLib.Marshaller.Free (native_locale);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern void g_key_file_set_double(IntPtr raw, IntPtr group_name, IntPtr key, double value);
+
+		public void SetDouble(string group_name, string key, double value) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			g_key_file_set_double(Handle, native_group_name, native_key, value);
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe bool g_key_file_remove_key(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error);
+
+		public unsafe bool RemoveKey(string group_name, string key) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			IntPtr error = IntPtr.Zero;
+			bool raw_ret = g_key_file_remove_key(Handle, native_group_name, native_key, out error);
+			bool ret = raw_ret;
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern void g_key_file_set_value(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr value);
+
+		public void SetValue(string group_name, string key, string value) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			IntPtr native_value = GLib.Marshaller.StringToPtrGStrdup (value);
+			g_key_file_set_value(Handle, native_group_name, native_key, native_value);
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			GLib.Marshaller.Free (native_value);
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe bool g_key_file_remove_group(IntPtr raw, IntPtr group_name, out IntPtr error);
+
+		public unsafe bool RemoveGroup(string group_name) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr error = IntPtr.Zero;
+			bool raw_ret = g_key_file_remove_group(Handle, native_group_name, out error);
+			bool ret = raw_ret;
+			GLib.Marshaller.Free (native_group_name);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe double g_key_file_get_double_list(IntPtr raw, IntPtr group_name, IntPtr key, out UIntPtr length, out IntPtr error);
+
+		public unsafe double GetDoubleList(string group_name, string key, out ulong length) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			UIntPtr native_length;
+			IntPtr error = IntPtr.Zero;
+			double raw_ret = g_key_file_get_double_list(Handle, native_group_name, native_key, out native_length, out error);
+			double ret = raw_ret;
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			length = (ulong) native_length;
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe bool g_key_file_remove_comment(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error);
+
+		public unsafe bool RemoveComment(string group_name, string key) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			IntPtr error = IntPtr.Zero;
+			bool raw_ret = g_key_file_remove_comment(Handle, native_group_name, native_key, out error);
+			bool ret = raw_ret;
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern void g_key_file_set_list_separator(IntPtr raw, IntPtr separator);
+
+		public string ListSeparator { 
+			set {
+				g_key_file_set_list_separator(Handle, GLib.Marshaller.StringToPtrGStrdup(value));
+			}
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe bool g_key_file_get_boolean_list(IntPtr raw, IntPtr group_name, IntPtr key, out UIntPtr length, out IntPtr error);
+
+		public unsafe bool GetBooleanList(string group_name, string key, out ulong length) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			UIntPtr native_length;
+			IntPtr error = IntPtr.Zero;
+			bool raw_ret = g_key_file_get_boolean_list(Handle, native_group_name, native_key, out native_length, out error);
+			bool ret = raw_ret;
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			length = (ulong) native_length;
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern bool g_key_file_has_group(IntPtr raw, IntPtr group_name);
+
+		public bool HasGroup(string group_name) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			bool raw_ret = g_key_file_has_group(Handle, native_group_name);
+			bool ret = raw_ret;
+			GLib.Marshaller.Free (native_group_name);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe bool g_key_file_set_comment(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr comment, out IntPtr error);
+
+		public unsafe bool SetComment(string group_name, string key, string comment) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			IntPtr native_comment = GLib.Marshaller.StringToPtrGStrdup (comment);
+			IntPtr error = IntPtr.Zero;
+			bool raw_ret = g_key_file_set_comment(Handle, native_group_name, native_key, native_comment, out error);
+			bool ret = raw_ret;
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			GLib.Marshaller.Free (native_comment);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe int g_key_file_get_integer(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error);
+
+		public unsafe int GetInteger(string group_name, string key) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			IntPtr error = IntPtr.Zero;
+			int raw_ret = g_key_file_get_integer(Handle, native_group_name, native_key, out error);
+			int ret = raw_ret;
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern void g_key_file_set_double_list(IntPtr raw, IntPtr group_name, IntPtr key, double[] list, UIntPtr length);
+
+		private void SetDoubleList(string group_name, string key, double[] list, ulong length) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			g_key_file_set_double_list(Handle, native_group_name, native_key, list, new UIntPtr (length));
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe IntPtr g_key_file_get_locale_string_list(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr locale, out UIntPtr length, out IntPtr error);
+
+		public unsafe string[] GetLocaleStringList(string group_name, string key, string locale, out ulong length) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			IntPtr native_locale = GLib.Marshaller.StringToPtrGStrdup (locale);
+			UIntPtr native_length;
+			IntPtr error = IntPtr.Zero;
+			IntPtr raw_ret = g_key_file_get_locale_string_list(Handle, native_group_name, native_key, native_locale, out native_length, out error);
+			string[] ret = GLib.Marshaller.NullTermPtrToStringArray (raw_ret, false);
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			GLib.Marshaller.Free (native_locale);
+			length = (ulong) native_length;
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe bool g_key_file_get_boolean(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error);
+
+		public unsafe bool GetBoolean(string group_name, string key) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			IntPtr error = IntPtr.Zero;
+			bool raw_ret = g_key_file_get_boolean(Handle, native_group_name, native_key, out error);
+			bool ret = raw_ret;
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern void g_key_file_set_locale_string_list(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr locale, IntPtr[] list, UIntPtr length);
+
+		public void SetLocaleStringList(string group_name, string key, string locale, string[] list, ulong length) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			IntPtr native_locale = GLib.Marshaller.StringToPtrGStrdup (locale);
+			int cnt_list = list == null ? 0 : list.Length;
+			IntPtr[] native_list = new IntPtr [cnt_list];
+			for (int i = 0; i < cnt_list; i++)
+				native_list [i] = GLib.Marshaller.StringToPtrGStrdup (list[i]);
+			g_key_file_set_locale_string_list(Handle, native_group_name, native_key, native_locale, native_list, new UIntPtr (length));
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			GLib.Marshaller.Free (native_locale);
+			for (int i = 0; i < native_list.Length; i++) {
+				list [i] = GLib.Marshaller.Utf8PtrToString (native_list[i]);
+				GLib.Marshaller.Free (native_list[i]);
+			}
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe IntPtr g_key_file_get_string_list(IntPtr raw, IntPtr group_name, IntPtr key, out UIntPtr length, out IntPtr error);
+
+		private unsafe string[] GetStringList(string group_name, string key, out ulong length) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			UIntPtr native_length;
+			IntPtr error = IntPtr.Zero;
+			IntPtr raw_ret = g_key_file_get_string_list(Handle, native_group_name, native_key, out native_length, out error);
+			string[] ret = GLib.Marshaller.NullTermPtrToStringArray (raw_ret, false);
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			length = (ulong) native_length;
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe IntPtr g_key_file_get_keys(IntPtr raw, IntPtr group_name, out UIntPtr length, out IntPtr error);
+
+		private unsafe string[] GetKeys(string group_name, out ulong length) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			UIntPtr native_length;
+			IntPtr error = IntPtr.Zero;
+			IntPtr raw_ret = g_key_file_get_keys(Handle, native_group_name, out native_length, out error);
+			string[] ret = GLib.Marshaller.NullTermPtrToStringArray (raw_ret, false);
+			GLib.Marshaller.Free (native_group_name);
+			length = (ulong) native_length;
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe bool g_key_file_load_from_data_dirs(IntPtr raw, IntPtr file, IntPtr full_path, int flags, out IntPtr error);
+
+		public unsafe bool LoadFromDataDirs(string file, string full_path, KeyFile.Flags flags) {
+			IntPtr native_file = GLib.Marshaller.StringToPtrGStrdup (file);
+			IntPtr error = IntPtr.Zero;
+			bool raw_ret = g_key_file_load_from_data_dirs(Handle, native_file, GLib.Marshaller.StringToPtrGStrdup(full_path), (int) flags, out error);
+			bool ret = raw_ret;
+			GLib.Marshaller.Free (native_file);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern void g_key_file_set_locale_string(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr locale, IntPtr str1ng);
+
+		public void SetLocaleString(string group_name, string key, string locale, string str1ng) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			IntPtr native_locale = GLib.Marshaller.StringToPtrGStrdup (locale);
+			IntPtr native_str1ng = GLib.Marshaller.StringToPtrGStrdup (str1ng);
+			g_key_file_set_locale_string(Handle, native_group_name, native_key, native_locale, native_str1ng);
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			GLib.Marshaller.Free (native_locale);
+			GLib.Marshaller.Free (native_str1ng);
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe bool g_key_file_load_from_file(IntPtr raw, IntPtr file, int flags, out IntPtr error);
+
+		public unsafe bool LoadFromFile(string file, KeyFile.Flags flags) {
+			IntPtr native_file = GLib.Marshaller.StringToPtrGStrdup (file);
+			IntPtr error = IntPtr.Zero;
+			bool raw_ret = g_key_file_load_from_file(Handle, native_file, (int) flags, out error);
+			bool ret = raw_ret;
+			GLib.Marshaller.Free (native_file);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern void g_key_file_set_integer_list(IntPtr raw, IntPtr group_name, IntPtr key, int[] list, UIntPtr length);
+
+		private void SetIntegerList(string group_name, string key, int[] list, ulong length) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			g_key_file_set_integer_list(Handle, native_group_name, native_key, list, new UIntPtr (length));
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern void g_key_file_set_boolean_list(IntPtr raw, IntPtr group_name, IntPtr key, bool[] list, UIntPtr length);
+
+		private void SetBooleanList(string group_name, string key, bool[] list, ulong length) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			g_key_file_set_boolean_list(Handle, native_group_name, native_key, list, new UIntPtr (length));
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe IntPtr g_key_file_to_data(IntPtr raw, out UIntPtr length, out IntPtr error);
+
+		private unsafe string ToData(out ulong length) {
+			UIntPtr native_length;
+			IntPtr error = IntPtr.Zero;
+			IntPtr raw_ret = g_key_file_to_data(Handle, out native_length, out error);
+			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
+			length = (ulong) native_length;
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern void g_key_file_set_string_list(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr[] list, UIntPtr length);
+
+		private void SetStringList(string group_name, string key, string[] list, ulong length) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			int cnt_list = list == null ? 0 : list.Length;
+			IntPtr[] native_list = new IntPtr [cnt_list];
+			for (int i = 0; i < cnt_list; i++)
+				native_list [i] = GLib.Marshaller.StringToPtrGStrdup (list[i]);
+			g_key_file_set_string_list(Handle, native_group_name, native_key, native_list, new UIntPtr (length));
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			for (int i = 0; i < native_list.Length; i++) {
+				list [i] = GLib.Marshaller.Utf8PtrToString (native_list[i]);
+				GLib.Marshaller.Free (native_list[i]);
+			}
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe bool g_key_file_load_from_data(IntPtr raw, IntPtr data, UIntPtr length, int flags, out IntPtr error);
+
+		public unsafe bool LoadFromData(string data, KeyFile.Flags flags) {
+			IntPtr native_data = GLib.Marshaller.StringToPtrGStrdup (data);
+			IntPtr error = IntPtr.Zero;
+			bool raw_ret = g_key_file_load_from_data(Handle, native_data, new UIntPtr ((ulong) System.Text.Encoding.UTF8.GetByteCount (data)), (int) flags, out error);
+			bool ret = raw_ret;
+			GLib.Marshaller.Free (native_data);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern void g_key_file_set_string(IntPtr raw, IntPtr group_name, IntPtr key, IntPtr str1ng);
+
+		public void SetString(string group_name, string key, string str1ng) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			IntPtr native_str1ng = GLib.Marshaller.StringToPtrGStrdup (str1ng);
+			g_key_file_set_string(Handle, native_group_name, native_key, native_str1ng);
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			GLib.Marshaller.Free (native_str1ng);
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe double g_key_file_get_double(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error);
+
+		public unsafe double GetDouble(string group_name, string key) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			IntPtr error = IntPtr.Zero;
+			double raw_ret = g_key_file_get_double(Handle, native_group_name, native_key, out error);
+			double ret = raw_ret;
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe IntPtr g_key_file_get_comment(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error);
+
+		public unsafe string GetComment(string group_name, string key) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			IntPtr error = IntPtr.Zero;
+			IntPtr raw_ret = g_key_file_get_comment(Handle, native_group_name, native_key, out error);
+			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern int g_key_file_error_quark();
+
+		public static int ErrorQuark() {
+			int raw_ret = g_key_file_error_quark();
+			int ret = raw_ret;
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe bool g_key_file_has_key(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error);
+
+		public unsafe bool HasKey(string group_name, string key) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			IntPtr error = IntPtr.Zero;
+			bool raw_ret = g_key_file_has_key(Handle, native_group_name, native_key, out error);
+			bool ret = raw_ret;
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe bool g_key_file_load_from_dirs(IntPtr raw, IntPtr file, IntPtr search_dirs, IntPtr full_path, int flags, out IntPtr error);
+
+		public unsafe bool LoadFromDirs(string file, string search_dirs, string full_path, KeyFile.Flags flags) {
+			IntPtr native_file = GLib.Marshaller.StringToPtrGStrdup (file);
+			IntPtr native_search_dirs = GLib.Marshaller.StringToPtrGStrdup (search_dirs);
+			IntPtr error = IntPtr.Zero;
+			bool raw_ret = g_key_file_load_from_dirs(Handle, native_file, native_search_dirs, GLib.Marshaller.StringToPtrGStrdup(full_path), (int) flags, out error);
+			bool ret = raw_ret;
+			GLib.Marshaller.Free (native_file);
+			GLib.Marshaller.Free (native_search_dirs);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe IntPtr g_key_file_get_value(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error);
+
+		public unsafe string GetValue(string group_name, string key) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			IntPtr error = IntPtr.Zero;
+			IntPtr raw_ret = g_key_file_get_value(Handle, native_group_name, native_key, out error);
+			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe int g_key_file_get_integer_list(IntPtr raw, IntPtr group_name, IntPtr key, out UIntPtr length, out IntPtr error);
+
+		public unsafe int GetIntegerList(string group_name, string key, out ulong length) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			UIntPtr native_length;
+			IntPtr error = IntPtr.Zero;
+			int raw_ret = g_key_file_get_integer_list(Handle, native_group_name, native_key, out native_length, out error);
+			int ret = raw_ret;
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			length = (ulong) native_length;
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern IntPtr g_key_file_get_start_group(IntPtr raw);
+
+		public string StartGroup { 
+			get {
+				IntPtr raw_ret = g_key_file_get_start_group(Handle);
+				string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
+				return ret;
+			}
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern void g_key_file_set_integer(IntPtr raw, IntPtr group_name, IntPtr key, int value);
+
+		public void SetInteger(string group_name, string key, int value) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			g_key_file_set_integer(Handle, native_group_name, native_key, value);
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern unsafe IntPtr g_key_file_get_string(IntPtr raw, IntPtr group_name, IntPtr key, out IntPtr error);
+
+		public unsafe string GetString(string group_name, string key) {
+			IntPtr native_group_name = GLib.Marshaller.StringToPtrGStrdup (group_name);
+			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
+			IntPtr error = IntPtr.Zero;
+			IntPtr raw_ret = g_key_file_get_string(Handle, native_group_name, native_key, out error);
+			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
+			GLib.Marshaller.Free (native_group_name);
+			GLib.Marshaller.Free (native_key);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		public GKeyFile(IntPtr raw) : base(raw) {}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern IntPtr g_key_file_new();
+
+		public GKeyFile () 
+		{
+			Raw = g_key_file_new();
+		}
+
+		[DllImport("libglib-2.0.dll")]
+		static extern void g_key_file_free(IntPtr raw);
+
+		protected override void Free (IntPtr raw)
+		{
+			g_key_file_free (raw);
+		}
+
+#endregion
+#region Customized extensions
+#line 1 "GKeyFile.custom"
+/*
+ * GKeyFile.custom
+ *
+ * Author(s):
+ *	Stephane Delcroix  (stephane delcroix org)
+ *
+ * Copyright (c) 2008 Novell, Inc.
+ *
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+	public GKeyFile (string file, KeyFile.Flags flags) : this ()
+	{
+		LoadFromFile (file, flags);
+	}
+
+	public GKeyFile (string file) : this (file, KeyFile.Flags.KeepComments)
+	{
+	}
+
+	public string ToData ()
+	{
+		ulong length;
+		return ToData (out length);
+	}
+
+	public void Save (string filename)
+	{
+		byte [] content = System.Text.Encoding.Default.GetBytes (ToData ());
+		System.IO.FileStream stream = System.IO.File.Create (filename);
+		stream.Write (content, 0, content.Length);
+		stream.Close ();
+	}
+	
+	public void SetStringList(string group_name, string key, string[] list) {
+		SetStringList (group_name, key, list, (ulong)list.Length);
+	}
+
+	public void SetBooleanList(string group_name, string key, bool[] list) {
+		SetBooleanList(group_name, key, list, (ulong)list.Length);
+	}
+	
+	public void SetIntegerList(string group_name, string key, int[] list) {
+		SetIntegerList (group_name, key, list, (ulong)list.Length);
+	}
+
+	public void SetDoubleList(string group_name, string key, double[] list) {
+		SetDoubleList (group_name, key, list, (ulong)list.Length);
+	}
+
+	public string [] GetKeys (string group_name) {
+		ulong length;
+		return GetKeys (group_name, out length);
+	}
+
+	public string [] GetGroups () {
+		ulong length;
+		return GetGroups (out length);
+	}
+
+	public string[] GetStringList(string group_name, string key) {
+		ulong length;
+		return GetStringList (group_name, key, out length);
+	}
+
+//	public bool[] GetBooleanList(string group_name, string key) {
+//		ulong length;
+//		return GetBooleanList (group_anme, key, out length);
+//	}
+//	
+//	public int[] GetIntegerList(string group_name, string key) {
+//		ulong length;
+//		return GetIntegerList (group_name, key, out length);
+//	}
+//
+//	public double[] GetDoubleList(string group_name, string key) {
+//		ulong length;
+//		return GetDoubleList (group_name, key, out length);
+//	}
+
+#endregion
+	}
+}

Added: trunk/GKeyFile/gkeyfile-api.raw
==============================================================================
--- (empty file)
+++ trunk/GKeyFile/gkeyfile-api.raw	Thu Dec  4 12:39:26 2008
@@ -0,0 +1,343 @@
+<?xml version="1.0"?>
+<api>
+  <!--
+
+        This file was automatically generated.
+        Please DO NOT MODIFY THIS FILE, modify .metadata files instead.
+
+-->
+  <namespace name="KeyFile" library="libglib-2.0.dll">
+    <enum name="Error" cname="GKeyFileError" type="enum">
+      <member cname="G_KEY_FILE_ERROR_UNKNOWN_ENCODING" name="UnknownEncoding" />
+      <member cname="G_KEY_FILE_ERROR_PARSE" name="Parse" />
+      <member cname="G_KEY_FILE_ERROR_NOT_FOUND" name="NotFound" />
+      <member cname="G_KEY_FILE_ERROR_KEY_NOT_FOUND" name="KeyNotFound" />
+      <member cname="G_KEY_FILE_ERROR_GROUP_NOT_FOUND" name="GroupNotFound" />
+      <member cname="G_KEY_FILE_ERROR_INVALID_VALUE" name="InvalidValue" />
+    </enum>
+    <enum name="Flags" cname="GKeyFileFlags" type="flags">
+      <member cname="G_KEY_FILE_NONE" name="None" />
+      <member cname="G_KEY_FILE_KEEP_COMMENTS" name="KeepComments" value="1 &lt;&lt; 0" />
+      <member cname="G_KEY_FILE_KEEP_TRANSLATIONS" name="KeepTranslations" value="1 &lt;&lt; 1" />
+    </enum>
+    <struct name="GKeyFile" cname="GKeyFile" opaque="true">
+      <method name="ErrorQuark" cname="g_key_file_error_quark" shared="true">
+        <return-type type="GQuark" />
+      </method>
+      <method name="Free" cname="g_key_file_free">
+        <return-type type="void" />
+      </method>
+      <method name="GetBoolean" cname="g_key_file_get_boolean">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetBooleanList" cname="g_key_file_get_boolean_list">
+        <return-type type="gboolean*" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gsize*" name="length" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetComment" cname="g_key_file_get_comment">
+        <return-type type="gchar*" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetDouble" cname="g_key_file_get_double">
+        <return-type type="gdouble" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetDoubleList" cname="g_key_file_get_double_list">
+        <return-type type="gdouble*" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gsize*" name="length" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetGroups" cname="g_key_file_get_groups">
+        <return-type type="gchar**" />
+        <parameters>
+          <parameter type="gsize*" name="length" />
+        </parameters>
+      </method>
+      <method name="GetInteger" cname="g_key_file_get_integer">
+        <return-type type="gint" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetIntegerList" cname="g_key_file_get_integer_list">
+        <return-type type="gint*" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gsize*" name="length" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetKeys" cname="g_key_file_get_keys">
+        <return-type type="gchar**" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="gsize*" name="length" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetLocaleString" cname="g_key_file_get_locale_string">
+        <return-type type="gchar*" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="const-gchar*" name="locale" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetLocaleStringList" cname="g_key_file_get_locale_string_list">
+        <return-type type="gchar**" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="const-gchar*" name="locale" />
+          <parameter type="gsize*" name="length" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetStartGroup" cname="g_key_file_get_start_group">
+        <return-type type="gchar*" />
+      </method>
+      <method name="GetString" cname="g_key_file_get_string">
+        <return-type type="gchar*" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetStringList" cname="g_key_file_get_string_list">
+        <return-type type="gchar**" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gsize*" name="length" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetValue" cname="g_key_file_get_value">
+        <return-type type="gchar*" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="HasGroup" cname="g_key_file_has_group">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+        </parameters>
+      </method>
+      <method name="HasKey" cname="g_key_file_has_key">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="LoadFromData" cname="g_key_file_load_from_data">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="data" />
+          <parameter type="gsize" name="length" />
+          <parameter type="GKeyFileFlags" name="flags" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="LoadFromDataDirs" cname="g_key_file_load_from_data_dirs">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="file" />
+          <parameter type="gchar**" name="full_path" />
+          <parameter type="GKeyFileFlags" name="flags" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="LoadFromDirs" cname="g_key_file_load_from_dirs">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="file" />
+          <parameter type="const-gchar**" name="search_dirs" />
+          <parameter type="gchar**" name="full_path" />
+          <parameter type="GKeyFileFlags" name="flags" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="LoadFromFile" cname="g_key_file_load_from_file">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="file" />
+          <parameter type="GKeyFileFlags" name="flags" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <constructor cname="g_key_file_new" />
+      <method name="RemoveComment" cname="g_key_file_remove_comment">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="RemoveGroup" cname="g_key_file_remove_group">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="RemoveKey" cname="g_key_file_remove_key">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="SetBoolean" cname="g_key_file_set_boolean">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gboolean" name="value" />
+        </parameters>
+      </method>
+      <method name="SetBooleanList" cname="g_key_file_set_boolean_list">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gboolean" array="true" name="list" />
+          <parameter type="gsize" name="length" />
+        </parameters>
+      </method>
+      <method name="SetComment" cname="g_key_file_set_comment">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="const-gchar*" name="comment" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="SetDouble" cname="g_key_file_set_double">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gdouble" name="value" />
+        </parameters>
+      </method>
+      <method name="SetDoubleList" cname="g_key_file_set_double_list">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gdouble" array="true" name="list" />
+          <parameter type="gsize" name="length" />
+        </parameters>
+      </method>
+      <method name="SetInteger" cname="g_key_file_set_integer">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gint" name="value" />
+        </parameters>
+      </method>
+      <method name="SetIntegerList" cname="g_key_file_set_integer_list">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gint" array="true" name="list" />
+          <parameter type="gsize" name="length" />
+        </parameters>
+      </method>
+      <method name="SetListSeparator" cname="g_key_file_set_list_separator">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="gchar" name="separator" />
+        </parameters>
+      </method>
+      <method name="SetLocaleString" cname="g_key_file_set_locale_string">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="const-gchar*" name="locale" />
+          <parameter type="const-gchar*" name="string" />
+        </parameters>
+      </method>
+      <method name="SetLocaleStringList" cname="g_key_file_set_locale_string_list">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="const-gchar*" name="locale" />
+          <parameter type="const-gchar*" array="true" name="list" />
+          <parameter type="gsize" name="length" />
+        </parameters>
+      </method>
+      <method name="SetString" cname="g_key_file_set_string">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="const-gchar*" name="string" />
+        </parameters>
+      </method>
+      <method name="SetStringList" cname="g_key_file_set_string_list">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="const-gchar*" array="true" name="list" />
+          <parameter type="gsize" name="length" />
+        </parameters>
+      </method>
+      <method name="SetValue" cname="g_key_file_set_value">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="const-gchar*" name="value" />
+        </parameters>
+      </method>
+      <method name="ToData" cname="g_key_file_to_data">
+        <return-type type="gchar*" />
+        <parameters>
+          <parameter type="gsize*" name="length" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+    </struct>
+  </namespace>
+</api>
\ No newline at end of file

Added: trunk/GKeyFile/gkeyfile-api.xml
==============================================================================
--- (empty file)
+++ trunk/GKeyFile/gkeyfile-api.xml	Thu Dec  4 12:39:26 2008
@@ -0,0 +1,343 @@
+<?xml version="1.0"?>
+<api>
+  <!--
+
+        This file was automatically generated.
+        Please DO NOT MODIFY THIS FILE, modify .metadata files instead.
+
+-->
+  <namespace name="KeyFile" library="libglib-2.0.dll">
+    <enum name="Error" cname="GKeyFileError" type="enum">
+      <member cname="G_KEY_FILE_ERROR_UNKNOWN_ENCODING" name="UnknownEncoding" />
+      <member cname="G_KEY_FILE_ERROR_PARSE" name="Parse" />
+      <member cname="G_KEY_FILE_ERROR_NOT_FOUND" name="NotFound" />
+      <member cname="G_KEY_FILE_ERROR_KEY_NOT_FOUND" name="KeyNotFound" />
+      <member cname="G_KEY_FILE_ERROR_GROUP_NOT_FOUND" name="GroupNotFound" />
+      <member cname="G_KEY_FILE_ERROR_INVALID_VALUE" name="InvalidValue" />
+    </enum>
+    <enum name="Flags" cname="GKeyFileFlags" type="flags">
+      <member cname="G_KEY_FILE_NONE" name="None" />
+      <member cname="G_KEY_FILE_KEEP_COMMENTS" name="KeepComments" value="1 &lt;&lt; 0" />
+      <member cname="G_KEY_FILE_KEEP_TRANSLATIONS" name="KeepTranslations" value="1 &lt;&lt; 1" />
+    </enum>
+    <struct name="GKeyFile" cname="GKeyFile" opaque="true">
+      <method name="ErrorQuark" cname="g_key_file_error_quark" shared="true">
+        <return-type type="GQuark" />
+      </method>
+      <method name="Free" cname="g_key_file_free">
+        <return-type type="void" />
+      </method>
+      <method name="GetBoolean" cname="g_key_file_get_boolean">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetBooleanList" cname="g_key_file_get_boolean_list">
+        <return-type type="gboolean*" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gsize*" name="length" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetComment" cname="g_key_file_get_comment">
+        <return-type type="gchar*" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetDouble" cname="g_key_file_get_double">
+        <return-type type="gdouble" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetDoubleList" cname="g_key_file_get_double_list">
+        <return-type type="gdouble*" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gsize*" name="length" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetGroups" cname="g_key_file_get_groups" accessibility="private">
+        <return-type type="gchar**" null_term_array="1" />
+        <parameters>
+          <parameter type="gsize*" name="length" />
+        </parameters>
+      </method>
+      <method name="GetInteger" cname="g_key_file_get_integer">
+        <return-type type="gint" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetIntegerList" cname="g_key_file_get_integer_list">
+        <return-type type="gint*" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gsize*" name="length" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetKeys" cname="g_key_file_get_keys" accessibility="private">
+        <return-type type="gchar**" null_term_array="1" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="gsize*" name="length" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetLocaleString" cname="g_key_file_get_locale_string">
+        <return-type type="gchar*" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="const-gchar*" name="locale" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetLocaleStringList" cname="g_key_file_get_locale_string_list">
+        <return-type type="gchar**" null_term_array="1" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="const-gchar*" name="locale" />
+          <parameter type="gsize*" name="length" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetStartGroup" cname="g_key_file_get_start_group">
+        <return-type type="gchar*" />
+      </method>
+      <method name="GetString" cname="g_key_file_get_string">
+        <return-type type="gchar*" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetStringList" cname="g_key_file_get_string_list" accessibility="private">
+        <return-type type="gchar**" null_term_array="1" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gsize*" name="length" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="GetValue" cname="g_key_file_get_value">
+        <return-type type="gchar*" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="HasGroup" cname="g_key_file_has_group">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+        </parameters>
+      </method>
+      <method name="HasKey" cname="g_key_file_has_key">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="LoadFromData" cname="g_key_file_load_from_data">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="data" />
+          <parameter type="gsize" name="length" />
+          <parameter type="GKeyFileFlags" name="flags" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="LoadFromDataDirs" cname="g_key_file_load_from_data_dirs">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="file" />
+          <parameter type="gchar**" name="full_path" />
+          <parameter type="GKeyFileFlags" name="flags" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="LoadFromDirs" cname="g_key_file_load_from_dirs">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="file" />
+          <parameter type="const-gchar**" name="search_dirs" />
+          <parameter type="gchar**" name="full_path" />
+          <parameter type="GKeyFileFlags" name="flags" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="LoadFromFile" cname="g_key_file_load_from_file">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="file" />
+          <parameter type="GKeyFileFlags" name="flags" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <constructor cname="g_key_file_new" />
+      <method name="RemoveComment" cname="g_key_file_remove_comment">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="RemoveGroup" cname="g_key_file_remove_group">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="RemoveKey" cname="g_key_file_remove_key">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="SetBoolean" cname="g_key_file_set_boolean">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gboolean" name="value" />
+        </parameters>
+      </method>
+      <method name="SetBooleanList" cname="g_key_file_set_boolean_list" accessibility="private">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gboolean" array="true" name="list" />
+          <parameter type="gsize" name="length" />
+        </parameters>
+      </method>
+      <method name="SetComment" cname="g_key_file_set_comment">
+        <return-type type="gboolean" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="const-gchar*" name="comment" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+      <method name="SetDouble" cname="g_key_file_set_double">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gdouble" name="value" />
+        </parameters>
+      </method>
+      <method name="SetDoubleList" cname="g_key_file_set_double_list" accessibility="private">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gdouble" array="true" name="list" />
+          <parameter type="gsize" name="length" />
+        </parameters>
+      </method>
+      <method name="SetInteger" cname="g_key_file_set_integer">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gint" name="value" />
+        </parameters>
+      </method>
+      <method name="SetIntegerList" cname="g_key_file_set_integer_list" accessibility="private">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="gint" array="true" name="list" />
+          <parameter type="gsize" name="length" />
+        </parameters>
+      </method>
+      <method name="SetListSeparator" cname="g_key_file_set_list_separator">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="gchar" name="separator" />
+        </parameters>
+      </method>
+      <method name="SetLocaleString" cname="g_key_file_set_locale_string">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="const-gchar*" name="locale" />
+          <parameter type="const-gchar*" name="string" />
+        </parameters>
+      </method>
+      <method name="SetLocaleStringList" cname="g_key_file_set_locale_string_list">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="const-gchar*" name="locale" />
+          <parameter type="const-gchar*" array="true" name="list" />
+          <parameter type="gsize" name="length" />
+        </parameters>
+      </method>
+      <method name="SetString" cname="g_key_file_set_string">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="const-gchar*" name="string" />
+        </parameters>
+      </method>
+      <method name="SetStringList" cname="g_key_file_set_string_list" accessibility="private">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="const-gchar*" array="true" name="list" />
+          <parameter type="gsize" name="length" />
+        </parameters>
+      </method>
+      <method name="SetValue" cname="g_key_file_set_value">
+        <return-type type="void" />
+        <parameters>
+          <parameter type="const-gchar*" name="group_name" />
+          <parameter type="const-gchar*" name="key" />
+          <parameter type="const-gchar*" name="value" />
+        </parameters>
+      </method>
+      <method name="ToData" cname="g_key_file_to_data" accessibility="private">
+        <return-type type="gchar*" />
+        <parameters>
+          <parameter type="gsize*" name="length" />
+          <parameter type="GError**" name="error" />
+        </parameters>
+      </method>
+    </struct>
+  </namespace>
+</api>
\ No newline at end of file

Added: trunk/GKeyFile/gkeyfile-sharp-sources.xml
==============================================================================
--- (empty file)
+++ trunk/GKeyFile/gkeyfile-sharp-sources.xml	Thu Dec  4 12:39:26 2008
@@ -0,0 +1,9 @@
+<gapi-parser-input>
+  <api filename="gkeyfile-api.raw">
+    <library name="libglib-2.0.dll">
+      <namespace name="KeyFile">
+        <file>/usr/include/glib-2.0/glib/gkeyfile.h</file>
+      </namespace>
+    </library>
+  </api>
+</gapi-parser-input>

Added: trunk/GKeyFile/sample.cs
==============================================================================
--- (empty file)
+++ trunk/GKeyFile/sample.cs	Thu Dec  4 12:39:26 2008
@@ -0,0 +1,81 @@
+/*
+ * sampple.cs : some code using GKeyFile
+ *
+ * Author(s):
+ *	Stephane Delcroix  (stephane delcroix org)
+ *
+ * Copyright (c) 2008 Novell, Inc.
+ *
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ */
+using System;
+using KeyFile;
+
+public class TestGKeyFile
+{
+	static void Main ()
+	{
+		GKeyFile key_file = new GKeyFile ();
+		key_file.SetComment (null, null, String.Format ("This file was autogenerated by sample.cs on {0}", DateTime.Now));
+		key_file.SetString ("General", "sKey0", "that's the string value associated to the sKey0");
+		key_file.SetComment ("General", null, "A comment for the General group");
+		key_file.SetComment ("General", "sKey0", "A comment for the sKey0 key");
+		key_file.SetStringList ("Lists", "sList", new string [] {"item0", "item1", "item2", "lastitem"});
+		key_file.SetBoolean ("SingleValues", "aBool", true);
+		key_file.SetBoolean ("SingleValues", "anotherBool", false);
+		key_file.SetString ("SingleValues", "aString", "this is _not_ a string");
+		key_file.SetInteger ("SingleValues", "anInt", 42);
+		key_file.SetDouble ("SingleValues", "aDouble", Math.PI);
+		key_file.SetComment ("SingleValues", "aDouble", "Change this at the time the square became the new circle");
+		key_file.Save ("mysamplefile.ini");
+
+		key_file = new GKeyFile ("mysamplefile.ini");
+		key_file.RemoveComment ("SingleValues", "aDouble");
+		key_file.SetBooleanList ("Lists", "bools", new bool [] {true, false, false, true});
+		key_file.SetIntegerList ("Lists", "ints", new int [] {0, 1, 2, -3, -5});
+		key_file.SetDoubleList ("Lists", "doubles", new double [] {Math.PI, Math.Sqrt (2)});
+
+		foreach (string group in key_file.GetGroups()) {
+			Console.WriteLine ("\t"+group);
+			foreach (string key in key_file.GetKeys (group))
+				Console.WriteLine ("\t\t"+ key);
+		}
+		Console.WriteLine (key_file.HasGroup ("Foo"));
+		Console.WriteLine (key_file.HasGroup ("General"));
+		Console.WriteLine (key_file.HasKey ("General", "sKey0"));
+		Console.WriteLine (key_file.HasKey ("General", "sKey1"));
+		try {
+			key_file.GetValue ("foo", "bar");
+		} catch (GLib.GException e) {
+			Console.WriteLine (e);
+		}
+		foreach (string val in key_file.GetStringList ("Lists", "sList"))
+			Console.WriteLine (val);
+
+		key_file.Save ("mysamplefile2.ini");
+
+		key_file = new GKeyFile ("mysamplefile.ini");
+		key_file.RemoveGroup ("General");
+		key_file.Save ("mysamplefile3.ini");
+
+	}
+}

Modified: trunk/Makefile.am
==============================================================================
--- trunk/Makefile.am	(original)
+++ trunk/Makefile.am	Thu Dec  4 12:39:26 2008
@@ -16,7 +16,8 @@
 	tools		\
 	po		\
 	src		\
-	extensions
+	extensions	\
+	GKeyFile
 
 DIST_SUBDIRS = 		\
 	gio-sharp	\
@@ -37,7 +38,8 @@
 	tools		\
 	po		\
 	src		\
-	extensions
+	extensions	\
+	GKeyFile
 
 desktop_in_files=	\
 	f-spot.desktop.in	\

Modified: trunk/configure.in
==============================================================================
--- trunk/configure.in	(original)
+++ trunk/configure.in	Thu Dec  4 12:39:26 2008
@@ -366,6 +366,7 @@
 src/f-spot.exe.config
 src/Cms.dll.config
 src/Makefile
+GKeyFile/Makefile
 glitz-sharp/Makefile
 glitz-sharp/src/Makefile
 Tao/Makefile



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