(root)/
glib-2.79.0/
girepository/
girmodule-private.h
       1  /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
       2   * GObject introspection: Parsed IDL
       3   *
       4   * Copyright (C) 2005 Matthias Clasen
       5   *
       6   * SPDX-License-Identifier: LGPL-2.1-or-later
       7   *
       8   * This library is free software; you can redistribute it and/or
       9   * modify it under the terms of the GNU Lesser General Public
      10   * License as published by the Free Software Foundation; either
      11   * version 2 of the License, or (at your option) any later version.
      12   *
      13   * This library is distributed in the hope that it will be useful,
      14   * but WITHOUT ANY WARRANTY; without even the implied warranty of
      15   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      16   * Lesser General Public License for more details.
      17   *
      18   * You should have received a copy of the GNU Lesser General Public
      19   * License along with this library; if not, write to the
      20   * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
      21   * Boston, MA 02111-1307, USA.
      22   */
      23  
      24  #pragma once
      25  
      26  #include <glib.h>
      27  #include "gitypelib-internal.h"
      28  
      29  G_BEGIN_DECLS
      30  
      31  typedef struct _GIIrTypelibBuild GIIrTypelibBuild;
      32  typedef struct _GIIrModule GIIrModule;
      33  
      34  struct _GIIrTypelibBuild {
      35    GIIrModule  *module;
      36    GHashTable  *strings;
      37    GHashTable  *types;
      38    GList       *nodes_with_attributes;
      39    guint32      n_attributes;
      40    guchar      *data;
      41    GList       *stack; 
      42  };
      43  
      44  struct _GIIrModule
      45  {
      46    gchar *name;
      47    gchar *version;
      48    gchar *shared_library;
      49    gchar *c_prefix;
      50    GList *dependencies;
      51    GList *entries;
      52  
      53    /* All modules that are included directly or indirectly */
      54    GList *include_modules;
      55  
      56    /* Aliases defined in the module or in included modules */
      57    GHashTable *aliases;
      58  
      59    /* Structures with the 'pointer' flag (typedef struct _X *X)
      60     * in the module or in included modules
      61     */
      62    GHashTable *pointer_structures;
      63    /* Same as 'pointer' structures, but with the deprecated
      64     * 'disguised' flag
      65     */
      66    GHashTable *disguised_structures;
      67  };
      68  
      69  GIIrModule *gi_ir_module_new            (const gchar *name,
      70                                           const gchar *nsversion,
      71                                           const gchar *module_filename,
      72                                           const gchar *c_prefix);
      73  void       gi_ir_module_free            (GIIrModule  *module);
      74  
      75  void       gi_ir_module_add_include_module (GIIrModule  *module,
      76                                              GIIrModule  *include_module);
      77  
      78  GITypelib * gi_ir_module_build_typelib (GIIrModule  *module);
      79  
      80  void       gi_ir_module_fatal (GIIrTypelibBuild  *build, guint line, const char *msg, ...) G_GNUC_PRINTF (3, 4) G_GNUC_NORETURN;
      81  
      82  void gi_ir_node_init_stats (void);
      83  void gi_ir_node_dump_stats (void);
      84  
      85  G_END_DECLS