diff options
author | Johan Dahlin <johan@gnome.org> | 2008-08-09 12:46:48 +0000 |
---|---|---|
committer | Johan Dahlin <johan@src.gnome.org> | 2008-08-09 12:46:48 +0000 |
commit | c37a96568cec88cb82ba3eadfaf513578eca7c76 (patch) | |
tree | 2185ece8e97167ec65e37ec866f7486e5b5eb88f /girepository/girnode.h | |
parent | b9c41e1af4e481c370806996cfa1e7ca61226a60 (diff) | |
download | gobject-introspection-c37a96568cec88cb82ba3eadfaf513578eca7c76.tar.gz |
Move shared *.[ch] files to girepository from tools
2008-08-09 Johan Dahlin <johan@gnome.org>
* girepository/Makefile.am:
* tools/Makefile.am:
* tools/girmodule.c:
* tools/girmodule.h:
* tools/girnode.c:
* tools/girnode.h:
* tools/girparser.c:
* tools/girparser.h:
* tools/girwriter.c:
* tools/girwriter.h:
Move shared *.[ch] files to girepository from tools
svn path=/trunk/; revision=337
Diffstat (limited to 'girepository/girnode.h')
-rw-r--r-- | girepository/girnode.h | 334 |
1 files changed, 334 insertions, 0 deletions
diff --git a/girepository/girnode.h b/girepository/girnode.h new file mode 100644 index 00000000..66144d38 --- /dev/null +++ b/girepository/girnode.h @@ -0,0 +1,334 @@ +/* GObject introspection: Parsed GIR + * + * Copyright (C) 2005 Matthias Clasen + * + * 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. + */ + +#ifndef __G_IR_NODE_H__ +#define __G_IR_NODE_H__ + +#include <glib.h> + +G_BEGIN_DECLS + +typedef struct _GIrNode GIrNode; +typedef struct _GIrNodeFunction GIrNodeFunction; +typedef struct _GIrNodeParam GIrNodeParam; +typedef struct _GIrNodeType GIrNodeType; +typedef struct _GIrNodeInterface GIrNodeInterface; +typedef struct _GIrNodeSignal GIrNodeSignal; +typedef struct _GIrNodeProperty GIrNodeProperty; +typedef struct _GIrNodeVFunc GIrNodeVFunc; +typedef struct _GIrNodeField GIrNodeField; +typedef struct _GIrNodeValue GIrNodeValue; +typedef struct _GIrNodeEnum GIrNodeEnum; +typedef struct _GIrNodeBoxed GIrNodeBoxed; +typedef struct _GIrNodeStruct GIrNodeStruct; +typedef struct _GIrNodeConstant GIrNodeConstant; +typedef struct _GIrNodeErrorDomain GIrNodeErrorDomain; +typedef struct _GIrNodeXRef GIrNodeXRef; +typedef struct _GIrNodeUnion GIrNodeUnion; + +typedef enum +{ + G_IR_NODE_INVALID = 0, + G_IR_NODE_FUNCTION = 1, + G_IR_NODE_CALLBACK = 2, + G_IR_NODE_STRUCT = 3, + G_IR_NODE_BOXED = 4, + G_IR_NODE_ENUM = 5, + G_IR_NODE_FLAGS = 6, + G_IR_NODE_OBJECT = 7, + G_IR_NODE_INTERFACE = 8, + G_IR_NODE_CONSTANT = 9, + G_IR_NODE_ERROR_DOMAIN = 10, + G_IR_NODE_UNION = 11, + G_IR_NODE_PARAM = 12, + G_IR_NODE_TYPE = 13, + G_IR_NODE_PROPERTY = 14, + G_IR_NODE_SIGNAL = 15, + G_IR_NODE_VALUE = 16, + G_IR_NODE_VFUNC = 17, + G_IR_NODE_FIELD = 18, + G_IR_NODE_XREF = 19 +} GIrNodeTypeId; + +struct _GIrNode +{ + GIrNodeTypeId type; + gchar *name; +}; + +struct _GIrNodeXRef +{ + GIrNode node; + + gchar *namespace; +}; + +struct _GIrNodeFunction +{ + GIrNode node; + + gboolean deprecated; + + gboolean is_method; + gboolean is_setter; + gboolean is_getter; + gboolean is_constructor; + gboolean wraps_vfunc; + + gchar *symbol; + + GIrNodeParam *result; + GList *parameters; +}; + +struct _GIrNodeType +{ + GIrNode node; + + gboolean is_pointer; + gboolean is_basic; + gboolean is_array; + gboolean is_glist; + gboolean is_gslist; + gboolean is_ghashtable; + gboolean is_interface; + gboolean is_error; + gint tag; + + gchar *unparsed; + + gboolean zero_terminated; + gboolean has_length; + gint length; + + GIrNodeType *parameter_type1; + GIrNodeType *parameter_type2; + + gchar *interface; + gchar **errors; +}; + +struct _GIrNodeParam +{ + GIrNode node; + + gboolean in; + gboolean out; + gboolean dipper; + gboolean optional; + gboolean retval; + gboolean null_ok; + gboolean transfer; + gboolean shallow_transfer; + + GIrNodeType *type; +}; + +struct _GIrNodeProperty +{ + GIrNode node; + + gboolean deprecated; + + gchar *name; + gboolean readable; + gboolean writable; + gboolean construct; + gboolean construct_only; + + GIrNodeType *type; +}; + +struct _GIrNodeSignal +{ + GIrNode node; + + gboolean deprecated; + + gboolean run_first; + gboolean run_last; + gboolean run_cleanup; + gboolean no_recurse; + gboolean detailed; + gboolean action; + gboolean no_hooks; + + gboolean has_class_closure; + gboolean true_stops_emit; + + gint class_closure; + + GList *parameters; + GIrNodeParam *result; +}; + +struct _GIrNodeVFunc +{ + GIrNode node; + + gboolean must_chain_up; + gboolean must_be_implemented; + gboolean must_not_be_implemented; + gboolean is_class_closure; + + GList *parameters; + GIrNodeParam *result; + + gint offset; +}; + +struct _GIrNodeField +{ + GIrNode node; + + gboolean readable; + gboolean writable; + gint bits; + gint offset; + + GIrNodeType *type; +}; + +struct _GIrNodeInterface +{ + GIrNode node; + + gboolean deprecated; + + gchar *gtype_name; + gchar *gtype_init; + + gchar *parent; + + GList *interfaces; + GList *prerequisites; + + GList *members; +}; + +struct _GIrNodeValue +{ + GIrNode node; + + gboolean deprecated; + + guint32 value; +}; + +struct _GIrNodeConstant +{ + GIrNode node; + + gboolean deprecated; + + GIrNodeType *type; + + gchar *value; +}; + +struct _GIrNodeEnum +{ + GIrNode node; + + gboolean deprecated; + + gchar *gtype_name; + gchar *gtype_init; + + GList *values; +}; + +struct _GIrNodeBoxed +{ + GIrNode node; + + gboolean deprecated; + + gchar *gtype_name; + gchar *gtype_init; + + GList *members; +}; + +struct _GIrNodeStruct +{ + GIrNode node; + + gboolean deprecated; + + GList *members; +}; + +struct _GIrNodeUnion +{ + GIrNode node; + + gboolean deprecated; + + GList *members; + GList *discriminators; + + gchar *gtype_name; + gchar *gtype_init; + + gint discriminator_offset; + GIrNodeType *discriminator_type; +}; + + +struct _GIrNodeErrorDomain +{ + GIrNode node; + + gboolean deprecated; + + gchar *name; + gchar *getquark; + gchar *codes; +}; + + +GIrNode * g_ir_node_new (GIrNodeTypeId type); +void g_ir_node_free (GIrNode *node); +guint32 g_ir_node_get_size (GIrNode *node); +guint32 g_ir_node_get_full_size (GIrNode *node); +void g_ir_node_build_metadata (GIrNode *node, + GIrModule *module, + GList *modules, + GHashTable *strings, + GHashTable *types, + guchar *data, + guint32 *offset, + guint32 *offset2); +int g_ir_node_cmp (GIrNode *node, + GIrNode *other); +gboolean g_ir_node_can_have_member (GIrNode *node); +void g_ir_node_add_member (GIrNode *node, + GIrNodeFunction *member); +guint32 write_string (const gchar *str, + GHashTable *strings, + guchar *data, + guint32 *offset); + +const gchar * g_ir_node_param_direction_string (GIrNodeParam * node); + +G_END_DECLS + +#endif /* __G_IR_NODE_H__ */ |