Top |
struct | GIRepository |
enum | GIRepositoryLoadFlags |
#define | G_IREPOSITORY_ERROR |
enum | GIRepositoryError |
GIRepository is used to manage repositories of namespaces. Namespaces are represented on disk by type libraries (.typelib files).
### Discovery of type libraries
GIRepository will typically look for a girepository-1.0
directory
under the library directory used when compiling gobject-introspection.
It is possible to control the search paths programmatically, using
g_irepository_prepend_search_path()
. It is also possible to modify
the search paths by using the GI_TYPELIB_PATH
environment variable.
The environment variable takes precedence over the default search path
and the g_irepository_prepend_search_path()
calls.
GIRepository *
g_irepository_get_default (void
);
Returns the singleton process-global default GIRepository. It is not currently supported to have multiple repositories in a particular process, but this function is provided in the unlikely eventuality that it would become possible, and as a convenience for higher level language bindings to conform to the GObject method call conventions.
All methods on GIRepository also accept NULL
as an instance
parameter to mean this default repository, which is usually more
convenient for C.
gchar ** g_irepository_get_dependencies (GIRepository *repository
,const gchar *namespace_
);
Retrieves all (transitive) versioned dependencies for
namespace_
.
The strings are of the form namespace-version
.
Note: namespace_
must have already been loaded using a function
such as g_irepository_require()
before calling this function.
To get only the immediate dependencies for namespace_
, use
g_irepository_get_immediate_dependencies()
.
repository |
A GIRepository or |
[allow-none] |
namespace_ |
Namespace of interest |
gchar ** g_irepository_get_immediate_dependencies (GIRepository *repository
,const gchar *namespace_
);
Return an array of the immediate versioned dependencies for namespace_
.
Returned strings are of the form namespace-version
.
Note: namespace_
must have already been loaded using a function
such as g_irepository_require()
before calling this function.
To get the transitive closure of dependencies for namespace_
, use
g_irepository_get_dependencies()
.
repository |
A GIRepository or |
[nullable] |
namespace_ |
Namespace of interest |
Since: 1.44
gchar **
g_irepository_get_loaded_namespaces (GIRepository *repository
);
Return the list of currently loaded namespaces.
repository |
A GIRepository or |
[allow-none] |
gint g_irepository_get_n_infos (GIRepository *repository
,const gchar *namespace_
);
This function returns the number of metadata entries in
given namespace namespace_
. The namespace must have
already been loaded before calling this function.
repository |
A GIRepository or |
[allow-none] |
namespace_ |
Namespace to inspect |
GIBaseInfo * g_irepository_get_info (GIRepository *repository
,const gchar *namespace_
,gint index
);
This function returns a particular metadata entry in the
given namespace namespace_
. The namespace must have
already been loaded before calling this function.
See g_irepository_get_n_infos()
to find the maximum number of
entries.
repository |
A GIRepository or |
[allow-none] |
namespace_ |
Namespace to inspect |
|
index |
0-based offset into namespace metadata for entry |
GOptionGroup *
g_irepository_get_option_group (void
);
Obtain the option group for girepository, it's used by the dumper and for programs that wants to provide introspection information
GList * g_irepository_enumerate_versions (GIRepository *repository
,const gchar *namespace_
);
Obtain an unordered list of versions (either currently loaded or
available) for namespace_
in this repository
.
repository |
A GIRepository or |
[allow-none] |
namespace_ |
GI namespace, e.g. "Gtk" |
void
g_irepository_prepend_library_path (const char *directory
);
Prepends directory
to the search path that is used to
search shared libraries referenced by imported namespaces.
Multiple calls to this function all contribute to the final
list of paths.
The list of paths is unique and shared for all GIRepository
instances across the process, but it doesn't affect namespaces
imported before the call.
If the library is not found in the directories configured in this way, loading will fall back to the system library path (ie. LD_LIBRARY_PATH and DT_RPATH in ELF systems). See the documentation of your dynamic linker for full details.
Since: 1.36
void
g_irepository_prepend_search_path (const char *directory
);
Prepends directory
to the typelib search path.
See also: g_irepository_get_search_path()
.
GSList *
g_irepository_get_search_path (void
);
Returns the current search path GIRepository will use when loading typelib files. The list is internal to GIRepository and should not be freed, nor should its string elements.
const char * g_irepository_load_typelib (GIRepository *repository
,GITypelib *typelib
,GIRepositoryLoadFlags flags
,GError **error
);
TODO
repository |
A GIRepository or |
[allow-none] |
typelib |
TODO |
|
flags |
TODO |
|
error |
TODO |
const gchar * g_irepository_get_typelib_path (GIRepository *repository
,const gchar *namespace_
);
If namespace namespace_
is loaded, return the full path to the
.typelib file it was loaded from. If the typelib for
namespace namespace_
was included in a shared library, return
the special string "<builtin>".
repository |
A GIRepository or |
[allow-none] |
namespace_ |
GI namespace to use, e.g. "Gtk" |
gboolean g_irepository_is_registered (GIRepository *repository
,const gchar *namespace_
,const gchar *version
);
Check whether a particular namespace (and optionally, a specific
version thereof) is currently loaded. This function is likely to
only be useful in unusual circumstances; in order to act upon
metadata in the namespace, you should call g_irepository_require()
instead which will ensure the namespace is loaded, and return as
quickly as this function will if it has already been loaded.
repository |
A GIRepository or |
[allow-none] |
namespace_ |
Namespace of interest |
|
version |
Required version, may be |
[allow-none] |
GITypelib * g_irepository_require (GIRepository *repository
,const gchar *namespace_
,const gchar *version
,GIRepositoryLoadFlags flags
,GError **error
);
Force the namespace namespace_
to be loaded if it isn't already.
If namespace_
is not loaded, this function will search for a
".typelib" file using the repository search path. In addition, a
version version
of namespace may be specified. If version
is
not specified, the latest will be used.
repository |
A GIRepository or |
[allow-none] |
namespace_ |
GI namespace to use, e.g. "Gtk" |
|
version |
Version of namespace, may be |
[allow-none] |
flags |
Set of |
|
error |
a GError. |
GITypelib * g_irepository_require_private (GIRepository *repository
,const gchar *typelib_dir
,const gchar *namespace_
,const gchar *version
,GIRepositoryLoadFlags flags
,GError **error
);
Force the namespace namespace_
to be loaded if it isn't already.
If namespace_
is not loaded, this function will search for a
".typelib" file within the private directory only. In addition, a
version version
of namespace should be specified. If version
is
not specified, the latest will be used.
repository |
A GIRepository or |
[allow-none] |
typelib_dir |
Private directory where to find the requested typelib |
|
namespace_ |
GI namespace to use, e.g. "Gtk" |
|
version |
Version of namespace, may be |
[allow-none] |
flags |
Set of |
|
error |
a GError. |
const gchar * g_irepository_get_c_prefix (GIRepository *repository
,const gchar *namespace_
);
This function returns the "C prefix", or the C level namespace associated with the given introspection namespace. Each C symbol starts with this prefix, as well each GType in the library.
Note: The namespace must have already been loaded using a function
such as g_irepository_require()
before calling this function.
repository |
A GIRepository or |
[allow-none] |
namespace_ |
Namespace to inspect |
const gchar * g_irepository_get_shared_library (GIRepository *repository
,const gchar *namespace_
);
This function returns a comma-separated list of paths to the
shared C libraries associated with the given namespace namespace_
.
There may be no shared library path associated, in which case this
function will return NULL
.
Note: The namespace must have already been loaded using a function
such as g_irepository_require()
before calling this function.
repository |
A GIRepository or |
[allow-none] |
namespace_ |
Namespace to inspect |
const gchar * g_irepository_get_version (GIRepository *repository
,const gchar *namespace_
);
This function returns the loaded version associated with the given
namespace namespace_
.
Note: The namespace must have already been loaded using a function
such as g_irepository_require()
before calling this function.
repository |
A GIRepository or |
[allow-none] |
namespace_ |
Namespace to inspect |
GIBaseInfo * g_irepository_find_by_gtype (GIRepository *repository
,GType gtype
);
Searches all loaded namespaces for a particular GType. Note that in order to locate the metadata, the namespace corresponding to the type must first have been loaded. There is currently no mechanism for determining the namespace which corresponds to an arbitrary GType - thus, this function will operate most reliably when you know the GType to originate from be from a loaded namespace.
repository |
A GIRepository or |
[allow-none] |
gtype |
GType to search for |
GIEnumInfo * g_irepository_find_by_error_domain (GIRepository *repository
,GQuark domain
);
Searches for the enum type corresponding to the given GError
domain. Before calling this function for a particular namespace,
you must call g_irepository_require()
once to load the namespace, or
otherwise ensure the namespace has already been loaded.
repository |
A GIRepository or |
[allow-none] |
domain |
a GError domain |
Since: 1.30
GIBaseInfo * g_irepository_find_by_name (GIRepository *repository
,const gchar *namespace_
,const gchar *name
);
Searches for a particular entry in a namespace. Before calling
this function for a particular namespace, you must call
g_irepository_require()
once to load the namespace, or otherwise
ensure the namespace has already been loaded.
repository |
A GIRepository or |
[allow-none] |
namespace_ |
Namespace which will be searched |
|
name |
Entry name to find |
void g_irepository_get_object_gtype_interfaces (GIRepository *repository
,GType gtype
,guint *n_interfaces_out
,GIInterfaceInfo ***interfaces_out
);
Look up the implemented interfaces for gtype
. This function
cannot fail per se; but for a totally "unknown" GType, it may
return 0 implemented interfaces.
The semantics of this function are designed for a dynamic binding,
where in certain cases (such as a function which returns an
interface which may have "hidden" implementation classes), not all
data may be statically known, and will have to be determined from
the GType of the object. An example is g_file_new_for_path()
returning a concrete class of GLocalFile, which is a GType we
see at runtime, but not statically.
repository |
a GIRepository, or |
[nullable] |
gtype |
a GType whose fundamental type is G_TYPE_OBJECT |
|
n_interfaces_out |
Number of interfaces. |
[out] |
interfaces_out |
Interfaces for |
[out][transfer none][array length=n_interfaces_out] |
Since: 1.62
gboolean g_irepository_dump (const char *arg
,GError **error
);
Dump the introspection data from the types specified in input_filename
to
output_filename
.
The input file should be a
UTF-8 Unix-line-ending text file, with each line containing either
get-type:
followed by the name of a [typeGObject.Type
] _get_type
function, or error-quark:
followed by the name of an error quark function.
No extra whitespace is allowed.
This function will overwrite the contents of the output file.
input_filename |
Input filename (for example |
[type filename] |
output_filename |
Output filename (for example |
[type filename] |
error |
a |
Since: 2.80
struct GIRepository;
The GIRepository structure contains private data and should only be accessed using the provided API.
#define G_IREPOSITORY_ERROR (g_irepository_error_quark ())
Error domain for GIRepository. Errors in this domain will be from the GIRepositoryError enumeration. See GError for more information on error domains.
An error code used with G_IREPOSITORY_ERROR in a GError returned from a GIRepository routine.