ibusattribute.h \
ibusattrlist.h \
ibusproperty.h \
+ ibusproplist.h \
ibuslookuptable.h \
ibusinputcontext.h \
ibusconfig.h \
ibusattribute.c \
ibusattrlist.c \
ibusproperty.c \
+ ibusproplist.c \
ibuslookuptable.c \
ibusinputcontext.c \
ibusconfig.c \
#include <ibusfactory.h>
#include <ibusengine.h>
#include <ibusproperty.h>
+#include <ibusproplist.h>
#include <ibuslookuptable.h>
#include <ibusbus.h>
#include <ibuskeysyms.h>
#include "ibusservice.h"
#include "ibusattribute.h"
#include "ibuslookuptable.h"
-#include "ibusproperty.h"
+#include "ibusproplist.h"
/*
* Type macros.
#include "ibusinputcontext.h"
#include "ibusattribute.h"
#include "ibuslookuptable.h"
-#include "ibusproperty.h"
+#include "ibusproplist.h"
#define IBUS_INPUT_CONTEXT_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_INPUT_CONTEXT, IBusInputContextPrivate))
#include "ibusconnection.h"
#include "ibuslookuptable.h"
#include "ibusservice.h"
-#include "ibusproperty.h"
+#include "ibusproplist.h"
/*
* Type macros.
* Boston, MA 02111-1307, USA.
*/
#include "ibusproperty.h"
+#include "ibusproplist.h"
/* functions prototype */
static void ibus_property_class_init (IBusPropertyClass *klass);
static gboolean ibus_property_copy (IBusProperty *dest,
const IBusProperty *src);
-static void ibus_prop_list_class_init (IBusPropListClass *klass);
-static void ibus_prop_list_init (IBusPropList *prop_list);
-static void ibus_prop_list_destroy (IBusPropList *prop_list);
-static gboolean ibus_prop_list_serialize (IBusPropList *prop_list,
- IBusMessageIter *iter);
-static gboolean ibus_prop_list_deserialize (IBusPropList *prop_list,
- IBusMessageIter *iter);
-static gboolean ibus_prop_list_copy (IBusPropList *dest,
- const IBusPropList *src);
-
static IBusSerializableClass *parent_class = NULL;
GType
return TRUE;
}
-GType
-ibus_prop_list_get_type (void)
-{
- static GType type = 0;
-
- static const GTypeInfo type_info = {
- sizeof (IBusPropListClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) ibus_prop_list_class_init,
- NULL, /* class finialize */
- NULL, /* class data */
- sizeof (IBusProperty),
- 0,
- (GInstanceInitFunc) ibus_prop_list_init,
- };
-
- if (type == 0) {
- type = g_type_register_static (IBUS_TYPE_SERIALIZABLE,
- "IBusPropList",
- &type_info,
- 0);
- }
-
- return type;
-}
-
-static void
-ibus_prop_list_class_init (IBusPropListClass *klass)
-{
- IBusObjectClass *object_class = IBUS_OBJECT_CLASS (klass);
- IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (klass);
-
- parent_class = (IBusSerializableClass *) g_type_class_peek_parent (klass);
-
- object_class->destroy = (IBusObjectDestroyFunc) ibus_prop_list_destroy;
- serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_prop_list_serialize;
- serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_prop_list_deserialize;
- serializable_class->copy = (IBusSerializableCopyFunc) ibus_prop_list_copy;
-
- g_string_append (serializable_class->signature, "av");
-}
-
-static void
-ibus_prop_list_init (IBusPropList *prop_list)
-{
- prop_list->properties = g_array_new (TRUE, TRUE, sizeof (IBusProperty *));
-}
-
-static void
-ibus_prop_list_destroy (IBusPropList *prop_list)
-{
- IBusProperty **p;
- gint i;
-
- p = (IBusProperty **) g_array_free (prop_list->properties, FALSE);
-
- for (i = 0; p[i] != NULL; i++) {
- g_object_unref (p[i]);
- }
- g_free (p);
-
- IBUS_OBJECT_CLASS (parent_class)->destroy ((IBusObject *) prop_list);
-}
-
-static gboolean
-ibus_prop_list_serialize (IBusPropList *prop_list,
- IBusMessageIter *iter)
-{
- gboolean retval;
- IBusMessageIter array_iter;
- IBusProperty *prop;
- guint i;
-
- retval = parent_class->serialize ((IBusSerializable *) prop_list, iter);
- g_return_val_if_fail (retval, FALSE);
-
- retval = ibus_message_iter_open_container (iter, IBUS_TYPE_ARRAY, "v", &array_iter);
- g_return_val_if_fail (retval, FALSE);
-
- i = 0;
-
- while ((prop = ibus_prop_list_get (prop_list, i)) != NULL) {
- retval = ibus_message_iter_append (&array_iter, IBUS_TYPE_PROPERTY, &prop);
- g_return_val_if_fail (retval, FALSE);
- i ++;
- }
-
- retval = ibus_message_iter_close_container (iter, &array_iter);
- g_return_val_if_fail (retval, FALSE);
-
- return TRUE;
-}
-
-gboolean
-ibus_prop_list_deserialize (IBusPropList *prop_list,
- IBusMessageIter *iter)
-{
- gboolean retval;
- IBusMessageIter array_iter;
- IBusSerializable *object;
-
- retval = parent_class->deserialize ((IBusSerializable *) prop_list, iter);
- g_return_val_if_fail (retval, FALSE);
-
- g_return_val_if_fail (IBUS_IS_PROP_LIST (prop_list), FALSE);
-
- retval = ibus_message_iter_recurse (iter, IBUS_TYPE_ARRAY, &array_iter);
- g_return_val_if_fail (retval, FALSE);
-
- while (ibus_message_iter_get_arg_type (&array_iter) != G_TYPE_INVALID) {
- retval = ibus_message_iter_get (&array_iter, IBUS_TYPE_PROPERTY, &object);
- g_return_val_if_fail (retval, FALSE);
- ibus_message_iter_next (&array_iter);
-
- ibus_prop_list_append (prop_list, (IBusProperty *)object);
- g_object_unref (object);
- }
-
- ibus_message_iter_next (iter);
-
- return TRUE;
-}
-
-
-
-static gboolean
-ibus_prop_list_copy (IBusPropList *dest,
- const IBusPropList *src)
-{
- gboolean retval;
- IBusProperty *prop;
- guint i;
-
- retval = parent_class->copy ((IBusSerializable *) dest,
- (const IBusSerializable *) src);
- g_return_val_if_fail (retval, FALSE);
-
- g_return_val_if_fail (IBUS_IS_PROP_LIST (dest), FALSE);
- g_return_val_if_fail (IBUS_IS_PROP_LIST (src), FALSE);
-
- i = 0;
- while ((prop = ibus_prop_list_get ((IBusPropList *)src, i)) != NULL) {
- prop = (IBusProperty *) ibus_serializable_copy ((IBusSerializable *) prop);
- ibus_prop_list_append (dest, prop);
- g_object_unref (prop);
- i ++;
- }
- return TRUE;
-}
-
-
-IBusPropList *
-ibus_prop_list_new ()
-{
- IBusPropList *prop_list;
-
- prop_list = g_object_new (IBUS_TYPE_PROP_LIST, NULL);
-
- return prop_list;
-}
-
-void
-ibus_prop_list_append (IBusPropList *prop_list,
- IBusProperty *prop)
-{
- g_assert (IBUS_IS_PROP_LIST (prop_list));
- g_assert (IBUS_IS_PROPERTY (prop));
-
- g_object_ref (prop);
-
- g_array_append_val (prop_list->properties, prop);
-}
-
-IBusProperty *
-ibus_prop_list_get (IBusPropList *prop_list,
- guint index)
-{
- g_assert (IBUS_IS_PROP_LIST (prop_list));
-
-
- if (index >= prop_list->properties->len)
- return NULL;
-
- return g_array_index (prop_list->properties, IBusProperty *, index);
-}
-
-
-
-gboolean
-ibus_prop_list_update_property (IBusPropList *prop_list,
- IBusProperty *prop_update)
-{
- g_assert (IBUS_IS_PROP_LIST (prop_list));
- g_assert (IBUS_IS_PROPERTY (prop_update));
-
- gint i;
-
- for (i = 0; i < prop_list->properties->len; i ++) {
- IBusProperty *prop = g_array_index (prop_list->properties, IBusProperty *, i);
- if (ibus_property_update (prop, prop_update)) {
- return TRUE;
- }
- }
-
- return FALSE;
-}
#define IBUS_PROPERTY_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_PROPERTY, IBusPropertyClass))
-/* define IBusPropList macros */
-/**
- * IBUS_TYPE_PROP_LIST:
- * @returns: IBusPropList GType.
- *
- * Returns GType of IBus property list.
- */
-#define IBUS_TYPE_PROP_LIST \
- (ibus_prop_list_get_type ())
-
-/**
- * IBUS_PROP_LIST:
- * @obj: An object which is subject to casting.
- *
- * Casts an IBUS_PROP_LIST or derived pointer into a (IBusPropList*) pointer.
- * Depending on the current debugging level, this function may invoke
- * certain runtime checks to identify invalid casts.
- */
-#define IBUS_PROP_LIST(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_PROP_LIST, IBusPropList))
-
-/**
- * IBUS_PROP_LIST_CLASS:
- * @klass: A class to be casted.
- *
- * Casts a derived IBusPropListClass structure into a IBusPropListClass structure.
- */
-#define IBUS_PROP_LIST_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_PROP_LIST, IBusPropListClass))
-
-/**
- * IBUS_IS_PROP_LIST:
- * @obj: Instance to check for being a IBUS_PROP_LIST.
- *
- * Checks whether a valid GTypeInstance pointer is of type IBUS_PROP_LIST.
- */
-#define IBUS_IS_PROP_LIST(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_PROP_LIST))
-
-/**
- * IBUS_IS_PROP_LIST_CLASS:
- * @klass: A class to be checked.
- *
- * Checks whether class "is a" valid IBusPropListClass structure of type IBUS_PROP_LIST or derived.
- */
-#define IBUS_IS_PROP_LIST_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_PROP_LIST))
-
-/**
- * IBUS_PROP_LIST_GET_CLASS:
- * @obj: An object.
- *
- * Get the class of a given object and cast the class to IBusPropListClass.
- */
-#define IBUS_PROP_LIST_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_PROP_LIST, IBusPropListClass))
-
/**
* IBusPropType:
* @PROP_TYPE_NORMAL: Property is shown as normal text.
IBusSerializableClass parent;
};
-/**
- * IBusPropList:
- * @properties: GArray that holds IBusProperties.
- *
- * An array of IBusProperties.
- */
-struct _IBusPropList {
- IBusSerializable parent;
-
- /*< public >*/
- GArray *properties;
-};
-
-struct _IBusPropListClass {
- IBusSerializableClass parent;
-};
-
GType ibus_property_get_type ();
/**
gboolean ibus_property_update (IBusProperty *prop,
IBusProperty *prop_update);
-GType ibus_prop_list_get_type ();
-
-/**
- * ibus_prop_list_new:
- * @returns: A newly allocated IBusPropList.
- *
- * New a IBusPropList.
- */
-IBusPropList *ibus_prop_list_new ();
-
-/**
- * ibus_prop_list_append:
- * @prop_list: An IBusPropList.
- * @prop: IBusProperty to be append to @prop_list.
- *
- * Append an IBusProperty to an IBusPropList, and increase reference.
- */
-void ibus_prop_list_append (IBusPropList *prop_list,
- IBusProperty *prop);
-
-/**
- * ibus_prop_list_get:
- * @prop_list: An IBusPropList.
- * @index: Index of an IBusPropList.
- * @returns: IBusProperty at given index, NULL if no such IBusProperty.
- *
- * Returns IBusProperty at given index. Borrowed reference.
- */
-IBusProperty *ibus_prop_list_get (IBusPropList *prop_list,
- guint index);
-
-/**
- * ibus_prop_list_update_property:
- * @prop_list: An IBusPropList.
- * @prop: IBusProperty to be update.
- * @returns: TRUE if succeeded, FALSE otherwise.
- *
- * Update an IBusProperty in IBusPropList.
- */
-gboolean ibus_prop_list_update_property
- (IBusPropList *prop_list,
- IBusProperty *prop);
G_END_DECLS
#endif
--- /dev/null
+/* vim:set et sts=4: */
+/* IBus - The Input Bus
+ * Copyright (C) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ * Copyright (C) 2008-2010 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+#include "ibusproplist.h"
+
+/* functions prototype */
+static void ibus_prop_list_class_init (IBusPropListClass *klass);
+static void ibus_prop_list_init (IBusPropList *prop_list);
+static void ibus_prop_list_destroy (IBusPropList *prop_list);
+static gboolean ibus_prop_list_serialize (IBusPropList *prop_list,
+ IBusMessageIter *iter);
+static gboolean ibus_prop_list_deserialize (IBusPropList *prop_list,
+ IBusMessageIter *iter);
+static gboolean ibus_prop_list_copy (IBusPropList *dest,
+ const IBusPropList *src);
+
+static IBusSerializableClass *parent_class = NULL;
+
+GType
+ibus_prop_list_get_type (void)
+{
+ static GType type = 0;
+
+ static const GTypeInfo type_info = {
+ sizeof (IBusPropListClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) ibus_prop_list_class_init,
+ NULL, /* class finialize */
+ NULL, /* class data */
+ sizeof (IBusProperty),
+ 0,
+ (GInstanceInitFunc) ibus_prop_list_init,
+ };
+
+ if (type == 0) {
+ type = g_type_register_static (IBUS_TYPE_SERIALIZABLE,
+ "IBusPropList",
+ &type_info,
+ 0);
+ }
+
+ return type;
+}
+
+static void
+ibus_prop_list_class_init (IBusPropListClass *klass)
+{
+ IBusObjectClass *object_class = IBUS_OBJECT_CLASS (klass);
+ IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (klass);
+
+ parent_class = (IBusSerializableClass *) g_type_class_peek_parent (klass);
+
+ object_class->destroy = (IBusObjectDestroyFunc) ibus_prop_list_destroy;
+
+ serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_prop_list_serialize;
+ serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_prop_list_deserialize;
+ serializable_class->copy = (IBusSerializableCopyFunc) ibus_prop_list_copy;
+
+ g_string_append (serializable_class->signature, "av");
+}
+
+static void
+ibus_prop_list_init (IBusPropList *prop_list)
+{
+ prop_list->properties = g_array_new (TRUE, TRUE, sizeof (IBusProperty *));
+}
+
+static void
+ibus_prop_list_destroy (IBusPropList *prop_list)
+{
+ IBusProperty **p;
+ gint i;
+
+ p = (IBusProperty **) g_array_free (prop_list->properties, FALSE);
+
+ for (i = 0; p[i] != NULL; i++) {
+ g_object_unref (p[i]);
+ }
+ g_free (p);
+
+ IBUS_OBJECT_CLASS (parent_class)->destroy ((IBusObject *) prop_list);
+}
+
+static gboolean
+ibus_prop_list_serialize (IBusPropList *prop_list,
+ IBusMessageIter *iter)
+{
+ gboolean retval;
+ IBusMessageIter array_iter;
+ IBusProperty *prop;
+ guint i;
+
+ retval = parent_class->serialize ((IBusSerializable *) prop_list, iter);
+ g_return_val_if_fail (retval, FALSE);
+
+ retval = ibus_message_iter_open_container (iter, IBUS_TYPE_ARRAY, "v", &array_iter);
+ g_return_val_if_fail (retval, FALSE);
+
+ i = 0;
+
+ while ((prop = ibus_prop_list_get (prop_list, i)) != NULL) {
+ retval = ibus_message_iter_append (&array_iter, IBUS_TYPE_PROPERTY, &prop);
+ g_return_val_if_fail (retval, FALSE);
+ i ++;
+ }
+
+ retval = ibus_message_iter_close_container (iter, &array_iter);
+ g_return_val_if_fail (retval, FALSE);
+
+ return TRUE;
+}
+
+gboolean
+ibus_prop_list_deserialize (IBusPropList *prop_list,
+ IBusMessageIter *iter)
+{
+ gboolean retval;
+ IBusMessageIter array_iter;
+ IBusSerializable *object;
+
+ retval = parent_class->deserialize ((IBusSerializable *) prop_list, iter);
+ g_return_val_if_fail (retval, FALSE);
+
+ g_return_val_if_fail (IBUS_IS_PROP_LIST (prop_list), FALSE);
+
+ retval = ibus_message_iter_recurse (iter, IBUS_TYPE_ARRAY, &array_iter);
+ g_return_val_if_fail (retval, FALSE);
+
+ while (ibus_message_iter_get_arg_type (&array_iter) != G_TYPE_INVALID) {
+ retval = ibus_message_iter_get (&array_iter, IBUS_TYPE_PROPERTY, &object);
+ g_return_val_if_fail (retval, FALSE);
+ ibus_message_iter_next (&array_iter);
+
+ ibus_prop_list_append (prop_list, (IBusProperty *)object);
+ g_object_unref (object);
+ }
+
+ ibus_message_iter_next (iter);
+
+ return TRUE;
+}
+
+
+
+static gboolean
+ibus_prop_list_copy (IBusPropList *dest,
+ const IBusPropList *src)
+{
+ gboolean retval;
+ IBusProperty *prop;
+ guint i;
+
+ retval = parent_class->copy ((IBusSerializable *) dest,
+ (const IBusSerializable *) src);
+ g_return_val_if_fail (retval, FALSE);
+
+ g_return_val_if_fail (IBUS_IS_PROP_LIST (dest), FALSE);
+ g_return_val_if_fail (IBUS_IS_PROP_LIST (src), FALSE);
+
+ i = 0;
+ while ((prop = ibus_prop_list_get ((IBusPropList *)src, i)) != NULL) {
+ prop = (IBusProperty *) ibus_serializable_copy ((IBusSerializable *) prop);
+ ibus_prop_list_append (dest, prop);
+ g_object_unref (prop);
+ i ++;
+ }
+ return TRUE;
+}
+
+
+IBusPropList *
+ibus_prop_list_new ()
+{
+ IBusPropList *prop_list;
+
+ prop_list = g_object_new (IBUS_TYPE_PROP_LIST, NULL);
+
+ return prop_list;
+}
+
+void
+ibus_prop_list_append (IBusPropList *prop_list,
+ IBusProperty *prop)
+{
+ g_assert (IBUS_IS_PROP_LIST (prop_list));
+ g_assert (IBUS_IS_PROPERTY (prop));
+
+ g_object_ref (prop);
+
+ g_array_append_val (prop_list->properties, prop);
+}
+
+IBusProperty *
+ibus_prop_list_get (IBusPropList *prop_list,
+ guint index)
+{
+ g_assert (IBUS_IS_PROP_LIST (prop_list));
+
+
+ if (index >= prop_list->properties->len)
+ return NULL;
+
+ return g_array_index (prop_list->properties, IBusProperty *, index);
+}
+
+
+
+gboolean
+ibus_prop_list_update_property (IBusPropList *prop_list,
+ IBusProperty *prop_update)
+{
+ g_assert (IBUS_IS_PROP_LIST (prop_list));
+ g_assert (IBUS_IS_PROPERTY (prop_update));
+
+ gint i;
+
+ for (i = 0; i < prop_list->properties->len; i ++) {
+ IBusProperty *prop = g_array_index (prop_list->properties, IBusProperty *, i);
+ if (ibus_property_update (prop, prop_update)) {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
--- /dev/null
+/* vim:set et sts=4: */
+/* IBus - The Input Bus
+ * Copyright (C) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ * Copyright (C) 2008-2010 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+/**
+ * SECTION: ibusproperty
+ * @short_description: UI component for input method engine property.
+ * @stability: Stable
+ * @see_also: #IBusEngine
+ *
+ */
+#ifndef __IBUS_PROP_LIST_H_
+#define __IBUS_PROP_LIST_H_
+
+#include "ibusserializable.h"
+#include "ibusproperty.h"
+
+G_BEGIN_DECLS
+
+/*
+ * Type macros.
+ */
+/* define IBusPropList macros */
+#define IBUS_TYPE_PROP_LIST \
+ (ibus_prop_list_get_type ())
+#define IBUS_PROP_LIST(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_PROP_LIST, IBusPropList))
+#define IBUS_PROP_LIST_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_PROP_LIST, IBusPropListClass))
+#define IBUS_IS_PROP_LIST(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_PROP_LIST))
+#define IBUS_IS_PROP_LIST_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_PROP_LIST))
+#define IBUS_PROP_LIST_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_PROP_LIST, IBusPropListClass))
+
+/*
+typedef struct _IBusPropList IBusPropList;
+typedef struct _IBusPropListClass IBusPropListClass;
+*/
+
+/**
+ * IBusPropList:
+ * @properties: GArray that holds IBusProperties.
+ *
+ * An array of IBusProperties.
+ */
+struct _IBusPropList {
+ IBusSerializable parent;
+
+ /*< public >*/
+ GArray *properties;
+};
+
+struct _IBusPropListClass {
+ IBusSerializableClass parent;
+};
+
+GType ibus_prop_list_get_type ();
+
+/**
+ * ibus_prop_list_new:
+ * @returns: A newly allocated IBusPropList.
+ *
+ * New a IBusPropList.
+ */
+IBusPropList *ibus_prop_list_new ();
+
+/**
+ * ibus_prop_list_append:
+ * @prop_list: An IBusPropList.
+ * @prop: IBusProperty to be append to @prop_list.
+ *
+ * Append an IBusProperty to an IBusPropList, and increase reference.
+ */
+void ibus_prop_list_append (IBusPropList *prop_list,
+ IBusProperty *prop);
+
+/**
+ * ibus_prop_list_get:
+ * @prop_list: An IBusPropList.
+ * @index: Index of an IBusPropList.
+ * @returns: IBusProperty at given index, NULL if no such IBusProperty.
+ *
+ * Returns IBusProperty at given index. Borrowed reference.
+ */
+IBusProperty *ibus_prop_list_get (IBusPropList *prop_list,
+ guint index);
+
+/**
+ * ibus_prop_list_update_property:
+ * @prop_list: An IBusPropList.
+ * @prop: IBusProperty to be update.
+ * @returns: TRUE if succeeded, FALSE otherwise.
+ *
+ * Update an IBusProperty in IBusPropList.
+ */
+gboolean ibus_prop_list_update_property
+ (IBusPropList *prop_list,
+ IBusProperty *prop);
+G_END_DECLS
+#endif