[girepository] Remove trailing whitespace
[gnome.gobject-introspection] / girepository / girnode.h
index b816137..1484884 100644 (file)
 
 #include <glib.h>
 
+#include "girmodule.h"
+
 G_BEGIN_DECLS
 
-typedef struct _GIrNode GIrNode; 
+typedef struct _GIrTypelibBuild GIrTypelibBuild;
+typedef struct _GIrNode GIrNode;
 typedef struct _GIrNodeFunction GIrNodeFunction;
 typedef struct _GIrNodeParam GIrNodeParam;
 typedef struct _GIrNodeType GIrNodeType;
@@ -43,7 +46,17 @@ typedef struct _GIrNodeErrorDomain GIrNodeErrorDomain;
 typedef struct _GIrNodeXRef GIrNodeXRef;
 typedef struct _GIrNodeUnion GIrNodeUnion;
 
-typedef enum 
+struct _GIrTypelibBuild {
+  GIrModule  *module;
+  GList       *modules;
+  GHashTable  *strings;
+  GHashTable  *types;
+  GList       *offset_ordered_nodes;
+  guint32      n_attributes;
+  guchar      *data;
+};
+
+typedef enum
 {
   G_IR_NODE_INVALID      =  0,
   G_IR_NODE_FUNCTION     =  1,
@@ -51,7 +64,7 @@ typedef enum
   G_IR_NODE_STRUCT       =  3,
   G_IR_NODE_BOXED        =  4,
   G_IR_NODE_ENUM         =  5,
-  G_IR_NODE_FLAGS        =  6, 
+  G_IR_NODE_FLAGS        =  6,
   G_IR_NODE_OBJECT       =  7,
   G_IR_NODE_INTERFACE    =  8,
   G_IR_NODE_CONSTANT     =  9,
@@ -71,6 +84,10 @@ struct _GIrNode
 {
   GIrNodeTypeId type;
   gchar *name;
+
+  guint32 offset; /* Assigned as we build the typelib */
+
+  GHashTable *attributes;
 };
 
 struct _GIrNodeXRef
@@ -85,7 +102,7 @@ struct _GIrNodeFunction
   GIrNode node;
 
   gboolean deprecated;
-  gboolean is_varargs; /* Not in typelib yet */ 
+  gboolean is_varargs; /* Not in typelib yet */
 
   gboolean is_method;
   gboolean is_setter;
@@ -100,7 +117,7 @@ struct _GIrNodeFunction
   GList *parameters;
 };
 
-struct _GIrNodeType 
+struct _GIrNodeType
 {
   GIrNode node;
 
@@ -119,15 +136,17 @@ struct _GIrNodeType
   gboolean zero_terminated;
   gboolean has_length;
   gint length;
-  
+  gboolean has_size;
+  gint size;
+
   GIrNodeType *parameter_type1;
-  GIrNodeType *parameter_type2;  
+  GIrNodeType *parameter_type2;
 
   gchar *interface;
   gchar **errors;
 };
 
-struct _GIrNodeParam 
+struct _GIrNodeParam
 {
   GIrNode node;
 
@@ -139,7 +158,11 @@ struct _GIrNodeParam
   gboolean allow_none;
   gboolean transfer;
   gboolean shallow_transfer;
-  
+  GIScopeType scope;
+
+  gint8 closure;
+  gint8 destroy;
+
   GIrNodeType *type;
 };
 
@@ -154,11 +177,11 @@ struct _GIrNodeProperty
   gboolean writable;
   gboolean construct;
   gboolean construct_only;
-  
+
   GIrNodeType *type;
 };
 
-struct _GIrNodeSignal 
+struct _GIrNodeSignal
 {
   GIrNode node;
 
@@ -171,28 +194,30 @@ struct _GIrNodeSignal
   gboolean detailed;
   gboolean action;
   gboolean no_hooks;
-  
+
   gboolean has_class_closure;
   gboolean true_stops_emit;
-  
+
   gint class_closure;
-  
+
   GList *parameters;
-  GIrNodeParam *result;    
+  GIrNodeParam *result;
 };
 
-struct _GIrNodeVFunc 
+struct _GIrNodeVFunc
 {
   GIrNode node;
 
-  gboolean is_varargs; /* Not in typelib yet */ 
+  gboolean is_varargs; /* Not in typelib yet */
   gboolean must_chain_up;
   gboolean must_be_implemented;
   gboolean must_not_be_implemented;
   gboolean is_class_closure;
-  
+
+  char *invoker;
+
   GList *parameters;
-  GIrNodeParam *result;      
+  GIrNodeParam *result;
 
   gint offset;
 };
@@ -205,7 +230,8 @@ struct _GIrNodeField
   gboolean writable;
   gint bits;
   gint offset;
-  
+  GIrNodeFunction *callback;
+
   GIrNodeType *type;
 };
 
@@ -220,10 +246,14 @@ struct _GIrNodeInterface
   gchar *gtype_init;
 
   gchar *parent;
-  
+  gchar *glib_type_struct;
+
   GList *interfaces;
   GList *prerequisites;
 
+  gint alignment;
+  gint size;
+
   GList *members;
 };
 
@@ -233,7 +263,7 @@ struct _GIrNodeValue
 
   gboolean deprecated;
 
-  guint32 value;
+  gint32 value;
 };
 
 struct _GIrNodeConstant
@@ -243,7 +273,7 @@ struct _GIrNodeConstant
   gboolean deprecated;
 
   GIrNodeType *type;
-  
+
   gchar *value;
 };
 
@@ -252,6 +282,7 @@ struct _GIrNodeEnum
   GIrNode node;
 
   gboolean deprecated;
+  gint storage_type;
 
   gchar *gtype_name;
   gchar *gtype_init;
@@ -260,14 +291,17 @@ struct _GIrNodeEnum
 };
 
 struct _GIrNodeBoxed
-{ 
+{
   GIrNode node;
 
   gboolean deprecated;
 
   gchar *gtype_name;
   gchar *gtype_init;
-  
+
+  gint alignment;
+  gint size;
+
   GList *members;
 };
 
@@ -276,10 +310,15 @@ struct _GIrNodeStruct
   GIrNode node;
 
   gboolean deprecated;
+  gboolean disguised;
+  gboolean is_gtype_struct;
 
   gchar *gtype_name;
   gchar *gtype_init;
-  
+
+  gint alignment;
+  gint size;
+
   GList *members;
 };
 
@@ -288,13 +327,16 @@ struct _GIrNodeUnion
   GIrNode node;
 
   gboolean deprecated;
-  
+
   GList *members;
   GList *discriminators;
 
   gchar *gtype_name;
   gchar *gtype_init;
 
+  gint alignment;
+  gint size;
+
   gint discriminator_offset;
   GIrNodeType *discriminator_type;
 };
@@ -305,7 +347,7 @@ struct _GIrNodeErrorDomain
   GIrNode node;
 
   gboolean deprecated;
-  
+
   gchar *name;
   gchar *getquark;
   gchar *codes;
@@ -316,27 +358,38 @@ 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_typelib   (GIrNode    *node,
-                                    GIrModule  *module,
-                                    GList       *modules,
-                                    GHashTable  *strings,
-                                    GHashTable  *types,
-                                    guchar      *data,
-                                    guint32     *offset,
-                                    guint32     *offset2);
+guint32   g_ir_node_get_attribute_size (GIrNode *node);
+void      g_ir_node_build_typelib   (GIrNode         *node,
+                                     GIrNode         *parent,
+                                     GIrTypelibBuild *build,
+                                     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, 
+                                    GHashTable  *strings,
                                     guchar      *data,
                                     guint32     *offset);
 
 const gchar * g_ir_node_param_direction_string (GIrNodeParam * node);
 const gchar * g_ir_node_type_to_string         (GIrNodeTypeId type);
 
+gboolean g_ir_find_node (GIrModule  *module,
+                        GList      *modules,
+                        const char *name,
+                        GIrNode   **node_out,
+                        GIrModule **module_out);
+
+/* In giroffsets.c */
+
+void g_ir_node_compute_offsets (GIrNode   *node,
+                               GIrModule *module,
+                               GList     *modules);
+
+
 G_END_DECLS
 
 #endif  /* __G_IR_NODE_H__ */