Separate IBusAttribute and IBusAttrList
authorPeng Huang <shawn.p.huang@gmail.com>
Tue, 12 Jan 2010 10:06:45 +0000 (18:06 +0800)
committerPeng Huang <shawn.p.huang@gmail.com>
Tue, 12 Jan 2010 10:06:45 +0000 (18:06 +0800)
src/Makefile.am
src/ibusattribute.c
src/ibusattribute.h
src/ibusattrlist.c [new file with mode: 0644]
src/ibusattrlist.h [new file with mode: 0644]
src/ibustext.h

index 566324d6f292bcce435b3e3e9199be32045a8a35..daa2cc51b5456ccd36183d794a47368253f6919c 100644 (file)
@@ -54,6 +54,7 @@ ibus_public_h_sources = \
        ibustext.h \
        ibuskeymap.h \
        ibusattribute.h \
+       ibusattrlist.h \
        ibusproperty.h \
        ibuslookuptable.h \
        ibusinputcontext.h \
@@ -93,6 +94,7 @@ ibus_c_sources = \
        ibustext.c \
        ibuskeymap.c \
        ibusattribute.c \
+       ibusattrlist.c \
        ibusproperty.c \
        ibuslookuptable.c \
        ibusinputcontext.c \
index 092bab27c1268ae721fc83d710c6c35a0afb9db9..f8720edbc36f2c7d2a5dfebdf6d69ad9894ca748 100644 (file)
@@ -31,16 +31,6 @@ static gboolean     ibus_attribute_deserialize  (IBusAttribute          *attr,
 static gboolean     ibus_attribute_copy         (IBusAttribute          *dest,
                                                  const IBusAttribute    *src);
 
-static void         ibus_attr_list_class_init   (IBusAttrListClass      *klass);
-static void         ibus_attr_list_init         (IBusAttrList           *attr_list);
-static void         ibus_attr_list_destroy      (IBusAttrList           *attr_list);
-static gboolean     ibus_attr_list_serialize    (IBusAttrList           *attr_list,
-                                                 IBusMessageIter        *iter);
-static gboolean     ibus_attr_list_deserialize  (IBusAttrList           *attr_list,
-                                                 IBusMessageIter        *iter);
-static gboolean     ibus_attr_list_copy         (IBusAttrList           *dest,
-                                                 const IBusAttrList     *src);
-
 static IBusSerializableClass *parent_class = NULL;
 
 GType
@@ -235,206 +225,4 @@ ibus_attr_background_new (guint color,
                                end_index);
 }
 
-GType
-ibus_attr_list_get_type (void)
-{
-    static GType type = 0;
-
-    static const GTypeInfo type_info = {
-        sizeof (IBusAttrListClass),
-        (GBaseInitFunc)     NULL,
-        (GBaseFinalizeFunc) NULL,
-        (GClassInitFunc)    ibus_attr_list_class_init,
-        NULL,               /* class finialize */
-        NULL,               /* class data */
-        sizeof (IBusAttrList),
-        0,
-        (GInstanceInitFunc) ibus_attr_list_init,
-    };
-
-    if (type == 0) {
-        type = g_type_register_static (IBUS_TYPE_SERIALIZABLE,
-                                       "IBusAttrList",
-                                       &type_info,
-                                       0);
-    }
-
-    return type;
-}
-
-static void
-ibus_attr_list_class_init (IBusAttrListClass *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_attr_list_destroy;
-
-    serializable_class->serialize   = (IBusSerializableSerializeFunc) ibus_attr_list_serialize;
-    serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_attr_list_deserialize;
-    serializable_class->copy        = (IBusSerializableCopyFunc) ibus_attr_list_copy;
-
-    g_string_append (serializable_class->signature, "av");
-}
-
-static void
-ibus_attr_list_init (IBusAttrList *attr_list)
-{
-    attr_list->attributes = g_array_new (TRUE, TRUE, sizeof (IBusAttribute *));
-}
-
-static void
-ibus_attr_list_destroy (IBusAttrList *attr_list)
-{
-    g_assert (IBUS_IS_ATTR_LIST (attr_list));
-
-    gint i;
-    for (i = 0;; i++) {
-        IBusAttribute *attr;
-
-        attr = ibus_attr_list_get (attr_list, i);
-        if (attr == NULL)
-            break;
-
-        g_object_unref (attr);
-    }
-
-    g_array_free (attr_list->attributes, TRUE);
-
-    IBUS_OBJECT_CLASS (parent_class)->destroy ((IBusObject *)attr_list);
-}
-
-static gboolean
-ibus_attr_list_serialize (IBusAttrList    *attr_list,
-                          IBusMessageIter *iter)
-{
-    IBusMessageIter array_iter;
-    gboolean retval;
-    guint i;
-
-    retval = parent_class->serialize ((IBusSerializable *)attr_list, iter);
-    g_return_val_if_fail (retval, FALSE);
-
-    g_return_val_if_fail (IBUS_IS_ATTR_LIST (attr_list), FALSE);
-
-    retval = ibus_message_iter_open_container (iter,
-                                               IBUS_TYPE_ARRAY,
-                                               "v",
-                                               &array_iter);
-    g_return_val_if_fail (retval, FALSE);
-
-    for (i = 0;; i++) {
-        IBusAttribute *attr;
-
-        attr = ibus_attr_list_get (attr_list, i);
-        if (attr == NULL)
-            break;
-
-        retval = ibus_message_iter_append (&array_iter, IBUS_TYPE_ATTRIBUTE, &attr);
-        g_return_val_if_fail (retval, FALSE);
-    }
-
-    retval = ibus_message_iter_close_container (iter, &array_iter);
-    g_return_val_if_fail (retval, FALSE);
-
-    return TRUE;
-}
-
-static gboolean
-ibus_attr_list_deserialize (IBusAttrList    *attr_list,
-                            IBusMessageIter *iter)
-{
-    DBusMessageIter array_iter;
-    gboolean retval;
-
-    retval = parent_class->deserialize ((IBusSerializable *)attr_list, iter);
-    g_return_val_if_fail (retval, 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) {
-        IBusAttribute *attr;
-
-        retval = ibus_message_iter_get (&array_iter, IBUS_TYPE_ATTRIBUTE, &attr);
-        g_return_val_if_fail (retval, FALSE);
-        ibus_message_iter_next (&array_iter);
-
-        ibus_attr_list_append (attr_list, attr);
-        g_object_unref (attr);
-    }
-
-    ibus_message_iter_next (iter);
-
-    return TRUE;
-}
-
-
-
-static gboolean
-ibus_attr_list_copy (IBusAttrList       *dest,
-                     const IBusAttrList *src)
-{
-    gboolean retval;
-
-    retval = parent_class->copy ((IBusSerializable *)dest,
-                                 (IBusSerializable *)src);
-    g_return_val_if_fail (retval, FALSE);
-
-    g_return_val_if_fail (IBUS_IS_ATTRIBUTE (dest), FALSE);
-    g_return_val_if_fail (IBUS_IS_ATTRIBUTE (src), FALSE);
-
-    gint i;
-    for (i = 0; ; i++) {
-        IBusAttribute *attr = ibus_attr_list_get ((IBusAttrList *)src, i);
-        if (attr == NULL) {
-            break;
-        }
-
-        attr = (IBusAttribute *) ibus_serializable_copy ((IBusSerializable *) attr);
-        if (attr == NULL) {
-            g_warning ("can not copy attribute");
-            continue;
-        }
-
-        ibus_attr_list_append (dest, attr);
-    }
-    return TRUE;
-}
-
-IBusAttrList *
-ibus_attr_list_new ()
-{
-    IBusAttrList *attr_list;
-    attr_list = g_object_new (IBUS_TYPE_ATTR_LIST, NULL);
-    return attr_list;
-}
-
-void
-ibus_attr_list_append (IBusAttrList  *attr_list,
-                       IBusAttribute *attr)
-{
-    g_assert (IBUS_IS_ATTR_LIST (attr_list));
-    g_assert (IBUS_IS_ATTRIBUTE (attr));
-
-    g_object_ref (attr);
-    g_array_append_val (attr_list->attributes, attr);
-}
-
-IBusAttribute *
-ibus_attr_list_get (IBusAttrList *attr_list,
-                    guint         index)
-{
-    g_assert (IBUS_IS_ATTR_LIST (attr_list));
-    IBusAttribute *attr = NULL;
-
-    if (index < attr_list->attributes->len) {
-        attr = g_array_index (attr_list->attributes, IBusAttribute *, index);
-    }
-
-    return attr;
-}
-
 
index 6cd8c71f334466b0032427b0bc188c8e68b7624a..74f2b06dbd3fc4db8e0e1f6919961c82822b1494 100644 (file)
@@ -31,6 +31,9 @@
 #define __IBUS_ATTRIBUTE_H_
 
 #include "ibusserializable.h"
+
+G_BEGIN_DECLS
+
 /*
  * Type macros.
  */
 #define IBUS_ATTRIBUTE_GET_CLASS(obj)   \
     (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_ATTRIBUTE, IBusAttributeClass))
 
-/* define IBusAttrList macros */
-/**
- * IBUS_TYPE_ATTR_LIST:
- *
- * Return GType of IBus attribute list.
- */
-#define IBUS_TYPE_ATTR_LIST             \
-    (ibus_attr_list_get_type ())
-
-/**
- * IBUS_ATTR_LIST:
- * @obj: An object which is subject to casting.
- *
- * Casts an IBUS_ATTR_LIST or derived pointer into a (IBusAttrList*) pointer.
- * Depending on the current debugging level, this function may invoke
- * certain runtime checks to identify invalid casts.
- */
-#define IBUS_ATTR_LIST(obj)             \
-    (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_ATTR_LIST, IBusAttrList))
-
-/**
- * IBUS_ATTR_LIST_CLASS:
- * @klass: A class to be casted.
- *
- * Casts a derived IBusAttrListClass structure into a IBusAttrListClass structure.
- */
-#define IBUS_ATTR_LIST_CLASS(klass)     \
-    (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_ATTR_LIST, IBusAttrListClass))
-
-/**
- * IBUS_IS_ATTR_LIST:
- * @obj: Instance to check for being a IBUS_ATTR_LIST.
- *
- * Checks whether a valid GTypeInstance pointer is of type IBUS_ATTR_LIST.
- */
-#define IBUS_IS_ATTR_LIST(obj)          \
-    (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_ATTR_LIST))
-
-/**
- * IBUS_IS_ATTR_LIST_CLASS:
- * @klass: A class to be checked.
- *
- * Checks whether class "is a" valid IBusAttrListClass structure of type IBUS_ATTR_LIST or derived.
- */
-#define IBUS_IS_ATTR_LIST_CLASS(klass)  \
-    (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_ATTR_LIST))
-
-/**
- * IBUS_ATTR_LIST_GET_CLASS:
- * @obj: An object.
- *
- * Get the class of a given object and cast the class to IBusAttrListClass.
- */
-#define IBUS_ATTR_LIST_GET_CLASS(obj)   \
-    (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_ATTR_LIST, IBusAttrListClass))
-
 /**
  * IBusAttrType:
  * @IBUS_ATTR_TYPE_UNDERLINE: Decorate with underline.
@@ -136,13 +83,8 @@ typedef enum {
     IBUS_ATTR_UNDERLINE_ERROR   = 4,
 } IBusAttrUnderline;
 
-G_BEGIN_DECLS
-
 typedef struct _IBusAttribute IBusAttribute;
 typedef struct _IBusAttributeClass IBusAttributeClass;
-typedef struct _IBusAttrList IBusAttrList;
-typedef struct _IBusAttrListClass IBusAttrListClass;
-
 
 /**
  * IBusAttribute:
@@ -168,23 +110,6 @@ struct _IBusAttributeClass {
     IBusSerializableClass parent;
 };
 
-/**
- * IBusAttrList:
- * @attributes: GArray that holds #IBusAttribute.
- *
- * Array of IBusAttribute.
- */
-struct _IBusAttrList {
-    IBusSerializable parent;
-
-    /*< public >*/
-    GArray *attributes;
-};
-
-struct _IBusAttrListClass {
-    IBusSerializableClass parent;
-};
-
 /**
  * ibus_attribute_get_type:
  * @returns: GType of IBusAttribute.
@@ -244,43 +169,6 @@ IBusAttribute       *ibus_attr_background_new   (guint           color,
                                                  guint           start_index,
                                                  guint           end_index);
 
-
-/**
- * ibus_attr_list_get_type:
- * @returns: GType of IBusAttrList.
- *
- * Returns GType of IBusAttrList.
- */
-GType                ibus_attr_list_get_type    ();
-
-/**
- * ibus_attr_list_new:
- * @returns: A newly allocated IBusAttrList.
- *
- * New an IBusAttrList.
- */
-IBusAttrList        *ibus_attr_list_new         ();
-
-/**
- * ibus_attr_list_append:
- * @attr_list: An IBusAttrList instance.
- * @attr: The IBusAttribute instance to be appended.
- *
- * Append an IBusAttribute to IBusAttrList, and increase reference.
- */
-void                 ibus_attr_list_append      (IBusAttrList   *attr_list,
-                                                 IBusAttribute  *attr);
-/**
- * ibus_attr_list_get:
- * @attr_list: An IBusAttrList instance.
- * @index: Index of the @attr_list.
- * @returns: IBusAttribute at given index, NULL if no such IBusAttribute.
- *
- * Returns IBusAttribute at given index. Borrowed reference.
- */
-IBusAttribute       *ibus_attr_list_get         (IBusAttrList   *attr_list,
-                                                 guint           index);
-
 G_END_DECLS
 #endif
 
diff --git a/src/ibusattrlist.c b/src/ibusattrlist.c
new file mode 100644 (file)
index 0000000..81d558f
--- /dev/null
@@ -0,0 +1,238 @@
+/* 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 "ibusattrlist.h"
+
+/* functions prototype */
+static void         ibus_attr_list_class_init   (IBusAttrListClass      *klass);
+static void         ibus_attr_list_init         (IBusAttrList           *attr_list);
+static void         ibus_attr_list_destroy      (IBusAttrList           *attr_list);
+static gboolean     ibus_attr_list_serialize    (IBusAttrList           *attr_list,
+                                                 IBusMessageIter        *iter);
+static gboolean     ibus_attr_list_deserialize  (IBusAttrList           *attr_list,
+                                                 IBusMessageIter        *iter);
+static gboolean     ibus_attr_list_copy         (IBusAttrList           *dest,
+                                                 const IBusAttrList     *src);
+
+static IBusSerializableClass *parent_class = NULL;
+
+GType
+ibus_attr_list_get_type (void)
+{
+    static GType type = 0;
+
+    static const GTypeInfo type_info = {
+        sizeof (IBusAttrListClass),
+        (GBaseInitFunc)     NULL,
+        (GBaseFinalizeFunc) NULL,
+        (GClassInitFunc)    ibus_attr_list_class_init,
+        NULL,               /* class finialize */
+        NULL,               /* class data */
+        sizeof (IBusAttrList),
+        0,
+        (GInstanceInitFunc) ibus_attr_list_init,
+    };
+
+    if (type == 0) {
+        type = g_type_register_static (IBUS_TYPE_SERIALIZABLE,
+                                       "IBusAttrList",
+                                       &type_info,
+                                       0);
+    }
+
+    return type;
+}
+
+static void
+ibus_attr_list_class_init (IBusAttrListClass *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_attr_list_destroy;
+
+    serializable_class->serialize   = (IBusSerializableSerializeFunc) ibus_attr_list_serialize;
+    serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_attr_list_deserialize;
+    serializable_class->copy        = (IBusSerializableCopyFunc) ibus_attr_list_copy;
+
+    g_string_append (serializable_class->signature, "av");
+}
+
+static void
+ibus_attr_list_init (IBusAttrList *attr_list)
+{
+    attr_list->attributes = g_array_new (TRUE, TRUE, sizeof (IBusAttribute *));
+}
+
+static void
+ibus_attr_list_destroy (IBusAttrList *attr_list)
+{
+    g_assert (IBUS_IS_ATTR_LIST (attr_list));
+
+    gint i;
+    for (i = 0;; i++) {
+        IBusAttribute *attr;
+
+        attr = ibus_attr_list_get (attr_list, i);
+        if (attr == NULL)
+            break;
+
+        g_object_unref (attr);
+    }
+
+    g_array_free (attr_list->attributes, TRUE);
+
+    IBUS_OBJECT_CLASS (parent_class)->destroy ((IBusObject *)attr_list);
+}
+
+static gboolean
+ibus_attr_list_serialize (IBusAttrList    *attr_list,
+                          IBusMessageIter *iter)
+{
+    IBusMessageIter array_iter;
+    gboolean retval;
+    guint i;
+
+    retval = parent_class->serialize ((IBusSerializable *)attr_list, iter);
+    g_return_val_if_fail (retval, FALSE);
+
+    g_return_val_if_fail (IBUS_IS_ATTR_LIST (attr_list), FALSE);
+
+    retval = ibus_message_iter_open_container (iter,
+                                               IBUS_TYPE_ARRAY,
+                                               "v",
+                                               &array_iter);
+    g_return_val_if_fail (retval, FALSE);
+
+    for (i = 0;; i++) {
+        IBusAttribute *attr;
+
+        attr = ibus_attr_list_get (attr_list, i);
+        if (attr == NULL)
+            break;
+
+        retval = ibus_message_iter_append (&array_iter, IBUS_TYPE_ATTRIBUTE, &attr);
+        g_return_val_if_fail (retval, FALSE);
+    }
+
+    retval = ibus_message_iter_close_container (iter, &array_iter);
+    g_return_val_if_fail (retval, FALSE);
+
+    return TRUE;
+}
+
+static gboolean
+ibus_attr_list_deserialize (IBusAttrList    *attr_list,
+                            IBusMessageIter *iter)
+{
+    DBusMessageIter array_iter;
+    gboolean retval;
+
+    retval = parent_class->deserialize ((IBusSerializable *)attr_list, iter);
+    g_return_val_if_fail (retval, 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) {
+        IBusAttribute *attr;
+
+        retval = ibus_message_iter_get (&array_iter, IBUS_TYPE_ATTRIBUTE, &attr);
+        g_return_val_if_fail (retval, FALSE);
+        ibus_message_iter_next (&array_iter);
+
+        ibus_attr_list_append (attr_list, attr);
+        g_object_unref (attr);
+    }
+
+    ibus_message_iter_next (iter);
+
+    return TRUE;
+}
+
+
+
+static gboolean
+ibus_attr_list_copy (IBusAttrList       *dest,
+                     const IBusAttrList *src)
+{
+    gboolean retval;
+
+    retval = parent_class->copy ((IBusSerializable *)dest,
+                                 (IBusSerializable *)src);
+    g_return_val_if_fail (retval, FALSE);
+
+    g_return_val_if_fail (IBUS_IS_ATTRIBUTE (dest), FALSE);
+    g_return_val_if_fail (IBUS_IS_ATTRIBUTE (src), FALSE);
+
+    gint i;
+    for (i = 0; ; i++) {
+        IBusAttribute *attr = ibus_attr_list_get ((IBusAttrList *)src, i);
+        if (attr == NULL) {
+            break;
+        }
+
+        attr = (IBusAttribute *) ibus_serializable_copy ((IBusSerializable *) attr);
+        if (attr == NULL) {
+            g_warning ("can not copy attribute");
+            continue;
+        }
+
+        ibus_attr_list_append (dest, attr);
+    }
+    return TRUE;
+}
+
+IBusAttrList *
+ibus_attr_list_new ()
+{
+    IBusAttrList *attr_list;
+    attr_list = g_object_new (IBUS_TYPE_ATTR_LIST, NULL);
+    return attr_list;
+}
+
+void
+ibus_attr_list_append (IBusAttrList  *attr_list,
+                       IBusAttribute *attr)
+{
+    g_assert (IBUS_IS_ATTR_LIST (attr_list));
+    g_assert (IBUS_IS_ATTRIBUTE (attr));
+
+    g_object_ref (attr);
+    g_array_append_val (attr_list->attributes, attr);
+}
+
+IBusAttribute *
+ibus_attr_list_get (IBusAttrList *attr_list,
+                    guint         index)
+{
+    g_assert (IBUS_IS_ATTR_LIST (attr_list));
+    IBusAttribute *attr = NULL;
+
+    if (index < attr_list->attributes->len) {
+        attr = g_array_index (attr_list->attributes, IBusAttribute *, index);
+    }
+
+    return attr;
+}
+
+
diff --git a/src/ibusattrlist.h b/src/ibusattrlist.h
new file mode 100644 (file)
index 0000000..f34c390
--- /dev/null
@@ -0,0 +1,111 @@
+/* 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: ibusattribute
+ * @short_description: AttrList of IBusText.
+ * @see_also: #IBusAttribute #IBusText
+ * @stability: Stable
+ *
+ */
+#ifndef __IBUS_ATTRIBUTE_LIST_H_
+#define __IBUS_ATTRIBUTE_LIST_H_
+
+#include "ibusattribute.h"
+
+G_BEGIN_DECLS
+
+/*
+ * Type macros.
+ */
+/* define IBusAttrList macros */
+#define IBUS_TYPE_ATTR_LIST             \
+    (ibus_attr_list_get_type ())
+#define IBUS_ATTR_LIST(obj)             \
+    (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_ATTR_LIST, IBusAttrList))
+#define IBUS_ATTR_LIST_CLASS(klass)     \
+    (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_ATTR_LIST, IBusAttrListClass))
+#define IBUS_IS_ATTR_LIST(obj)          \
+    (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_ATTR_LIST))
+#define IBUS_IS_ATTR_LIST_CLASS(klass)  \
+    (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_ATTR_LIST))
+#define IBUS_ATTR_LIST_GET_CLASS(obj)   \
+    (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_ATTR_LIST, IBusAttrListClass))
+
+
+typedef struct _IBusAttrList IBusAttrList;
+typedef struct _IBusAttrListClass IBusAttrListClass;
+
+/**
+ * IBusAttrList:
+ * @attributes: GArray that holds #IBusAttribute.
+ *
+ * Array of IBusAttribute.
+ */
+struct _IBusAttrList {
+    IBusSerializable parent;
+
+    /*< public >*/
+    GArray *attributes;
+};
+
+struct _IBusAttrListClass {
+    IBusSerializableClass parent;
+};
+
+/**
+ * ibus_attr_list_get_type:
+ * @returns: GType of IBusAttrList.
+ *
+ * Returns GType of IBusAttrList.
+ */
+GType                ibus_attr_list_get_type    ();
+
+/**
+ * ibus_attr_list_new:
+ * @returns: A newly allocated IBusAttrList.
+ *
+ * New an IBusAttrList.
+ */
+IBusAttrList        *ibus_attr_list_new         ();
+
+/**
+ * ibus_attr_list_append:
+ * @attr_list: An IBusAttrList instance.
+ * @attr: The IBusAttribute instance to be appended.
+ *
+ * Append an IBusAttribute to IBusAttrList, and increase reference.
+ */
+void                 ibus_attr_list_append      (IBusAttrList   *attr_list,
+                                                 IBusAttribute  *attr);
+/**
+ * ibus_attr_list_get:
+ * @attr_list: An IBusAttrList instance.
+ * @index: Index of the @attr_list.
+ * @returns: IBusAttribute at given index, NULL if no such IBusAttribute.
+ *
+ * Returns IBusAttribute at given index. Borrowed reference.
+ */
+IBusAttribute       *ibus_attr_list_get         (IBusAttrList   *attr_list,
+                                                 guint           index);
+
+G_END_DECLS
+#endif
+
index 30efd01a18d41d8218b271f1a9c61fe24a86f6a0..476e9575f08648793c473fd907047f2388ce0af1 100644 (file)
@@ -33,7 +33,7 @@
 #define __IBUS_TEXT_H_
 
 #include "ibusserializable.h"
-#include "ibusattribute.h"
+#include "ibusattrlist.h"
 
 /*
  * Type macros.