]> Pileus Git - ~andy/gtk/blob - gtk/gtktexttagtable.h
traverse all nodes, not just the leafs (pointed out by Josh Parsons)
[~andy/gtk] / gtk / gtktexttagtable.h
1 #ifndef GTK_TEXT_TAG_TABLE_H
2 #define GTK_TEXT_TAG_TABLE_H
3
4 #include <gtk/gtktexttag.h>
5
6 #ifdef __cplusplus
7 extern "C" {
8 #endif /* __cplusplus */
9
10 #include <gtk/gtktexttag.h>
11
12 typedef void (* GtkTextTagTableForeach) (GtkTextTag *tag, gpointer data);
13
14 #define GTK_TYPE_TEXT_TAG_TABLE            (gtk_text_tag_table_get_type ())
15 #define GTK_TEXT_TAG_TABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TEXT_TAG_TABLE, GtkTextTagTable))
16 #define GTK_TEXT_TAG_TABLE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TEXT_TAG_TABLE, GtkTextTagTableClass))
17 #define GTK_IS_TEXT_TAG_TABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TEXT_TAG_TABLE))
18 #define GTK_IS_TEXT_TAG_TABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TEXT_TAG_TABLE))
19 #define GTK_TEXT_TAG_TABLE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TEXT_TAG_TABLE, GtkTextTagTableClass))
20
21 typedef struct _GtkTextTagTableClass GtkTextTagTableClass;
22
23 struct _GtkTextTagTable
24 {
25   GObject parent_instance;
26
27   GHashTable *hash;
28   GSList *anonymous;
29   gint anon_count;
30
31   GSList *buffers;
32 };
33
34 struct _GtkTextTagTableClass
35 {
36   GObjectClass parent_class;
37
38   void (* tag_changed) (GtkTextTagTable *table, GtkTextTag *tag, gboolean size_changed);
39   void (* tag_added) (GtkTextTagTable *table, GtkTextTag *tag);
40   void (* tag_removed) (GtkTextTagTable *table, GtkTextTag *tag);
41
42   /* Padding for future expansion */
43   void (*_gtk_reserved1) (void);
44   void (*_gtk_reserved2) (void);
45   void (*_gtk_reserved3) (void);
46   void (*_gtk_reserved4) (void);
47 };
48
49 GType          gtk_text_tag_table_get_type (void) G_GNUC_CONST;
50
51 GtkTextTagTable *gtk_text_tag_table_new      (void);
52 void             gtk_text_tag_table_add      (GtkTextTagTable        *table,
53                                               GtkTextTag             *tag);
54 void             gtk_text_tag_table_remove   (GtkTextTagTable        *table,
55                                               GtkTextTag             *tag);
56 GtkTextTag      *gtk_text_tag_table_lookup   (GtkTextTagTable        *table,
57                                               const gchar            *name);
58 void             gtk_text_tag_table_foreach  (GtkTextTagTable        *table,
59                                               GtkTextTagTableForeach  func,
60                                               gpointer                data);
61 gint             gtk_text_tag_table_get_size (GtkTextTagTable        *table);
62
63
64 /* INTERNAL private stuff - not even exported from the library on
65  * many platforms
66  */
67 void _gtk_text_tag_table_add_buffer    (GtkTextTagTable *table,
68                                         gpointer         buffer);
69 void _gtk_text_tag_table_remove_buffer (GtkTextTagTable *table,
70                                         gpointer         buffer);
71
72 #ifdef __cplusplus
73 }
74 #endif /* __cplusplus */
75
76 #endif
77