Blame docs/reference/gio/html/gio-Extension-Points.html

Packit ae235b
Packit ae235b
<html>
Packit ae235b
<head>
Packit ae235b
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Packit ae235b
<title>Extension Points: GIO Reference Manual</title>
Packit ae235b
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
Packit ae235b
<link rel="home" href="index.html" title="GIO Reference Manual">
Packit ae235b
<link rel="up" href="extending.html" title="Extending GIO">
Packit ae235b
<link rel="prev" href="GIOModule.html" title="GIOModule">
Packit ae235b
<link rel="next" href="tools.html" title="GIO Tools">
Packit ae235b
<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
Packit ae235b
<link rel="stylesheet" href="style.css" type="text/css">
Packit ae235b
</head>
Packit ae235b
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
Packit ae235b
Packit ae235b
Packit ae235b
Top  | 
Packit ae235b
                  Description
Packit ae235b
Packit ae235b
Home
Packit ae235b
Up
Packit ae235b
Prev
Packit ae235b
Next
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Extension Points

Packit ae235b

Extension Points — Extension Points

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Functions

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
const char *
Packit ae235b
Packit ae235b
Packit ae235b
g_io_extension_get_name ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
gint
Packit ae235b
Packit ae235b
Packit ae235b
g_io_extension_get_priority ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
GType
Packit ae235b
Packit ae235b
Packit ae235b
g_io_extension_get_type ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
GIOExtension *
Packit ae235b
Packit ae235b
Packit ae235b
g_io_extension_point_get_extension_by_name ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
GList *
Packit ae235b
Packit ae235b
Packit ae235b
g_io_extension_point_get_extensions ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
GType
Packit ae235b
Packit ae235b
Packit ae235b
g_io_extension_point_get_required_type ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
GIOExtension *
Packit ae235b
Packit ae235b
Packit ae235b
g_io_extension_point_implement ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
GIOExtensionPoint *
Packit ae235b
Packit ae235b
Packit ae235b
g_io_extension_point_lookup ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
GIOExtensionPoint *
Packit ae235b
Packit ae235b
Packit ae235b
g_io_extension_point_register ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
void
Packit ae235b
Packit ae235b
Packit ae235b
g_io_extension_point_set_required_type ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
GTypeClass *
Packit ae235b
Packit ae235b
Packit ae235b
g_io_extension_ref_class ()
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Types and Values

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
 
Packit ae235b
GIOExtension
Packit ae235b
Packit ae235b
Packit ae235b
 
Packit ae235b
GIOExtensionPoint
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Includes

Packit ae235b
#include <gio.h>
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Description

Packit ae235b

GIOExtensionPoint provides a mechanism for modules to extend the

Packit ae235b
functionality of the library or application that loaded it in an 
Packit ae235b
organized fashion.  

Packit ae235b

An extension point is identified by a name, and it may optionally

Packit ae235b
require that any implementation must be of a certain type (or derived
Packit ae235b
thereof). Use g_io_extension_point_register() to register an
Packit ae235b
extension point, and g_io_extension_point_set_required_type() to
Packit ae235b
set a required type.

Packit ae235b

A module can implement an extension point by specifying the GType

Packit ae235b
that implements the functionality. Additionally, each implementation
Packit ae235b
of an extension point has a name, and a priority. Use
Packit ae235b
g_io_extension_point_implement() to implement an extension point.

Packit ae235b
Packit ae235b
  
Packit ae235b
    
Packit ae235b
      
Packit ae235b
        
1
Packit ae235b
2
Packit ae235b
3
Packit ae235b
4
Packit ae235b
5
Packit ae235b
        
GIOExtensionPoint *ep;
Packit ae235b
Packit ae235b
// Register an extension point
Packit ae235b
ep = g_io_extension_point_register ("my-extension-point");
Packit ae235b
g_io_extension_point_set_required_type (ep, MY_TYPE_EXAMPLE);
Packit ae235b
      
Packit ae235b
    
Packit ae235b
  
Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b
  
Packit ae235b
    
Packit ae235b
      
Packit ae235b
        
1
Packit ae235b
2
Packit ae235b
3
Packit ae235b
4
Packit ae235b
5
Packit ae235b
6
Packit ae235b
        
// Implement an extension point
Packit ae235b
G_DEFINE_TYPE (MyExampleImpl, my_example_impl, MY_TYPE_EXAMPLE)
Packit ae235b
g_io_extension_point_implement ("my-extension-point",
Packit ae235b
                                my_example_impl_get_type (),
Packit ae235b
                                "my-example",
Packit ae235b
                                10);
Packit ae235b
      
Packit ae235b
    
Packit ae235b
  
Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b

It is up to the code that registered the extension point how

Packit ae235b
 it uses the implementations that have been associated with it.
Packit ae235b
 Depending on the use case, it may use all implementations, or
Packit ae235b
 only the one with the highest priority, or pick a specific
Packit ae235b
 one by name.

Packit ae235b

To avoid opening all modules just to find out what extension

Packit ae235b
 points they implement, GIO makes use of a caching mechanism,
Packit ae235b
 see gio-querymodules.
Packit ae235b
 You are expected to run this command after installing a
Packit ae235b
 GIO module.

Packit ae235b

The GIO_EXTRA_MODULES environment variable can be used to

Packit ae235b
 specify additional directories to automatically load modules
Packit ae235b
 from. This environment variable has the same syntax as the
Packit ae235b
 PATH. If two modules have the same base name in different
Packit ae235b
 directories, then the latter one will be ignored. If additional
Packit ae235b
 directories are specified GIO will load modules from the built-in
Packit ae235b
 directory last.

Packit ae235b
Packit ae235b
Packit ae235b

Functions

Packit ae235b
Packit ae235b

g_io_extension_get_name ()

Packit ae235b
const char *
Packit ae235b
g_io_extension_get_name (GIOExtension *extension);
Packit ae235b

Gets the name under which extension

Packit ae235b
 was registered.

Packit ae235b

Note that the same type may be registered as extension

Packit ae235b
for multiple extension points, under different names.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

extension

Packit ae235b

a GIOExtension

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

the name of extension

Packit ae235b
.

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_io_extension_get_priority ()

Packit ae235b
gint
Packit ae235b
g_io_extension_get_priority (GIOExtension *extension);
Packit ae235b

Gets the priority with which extension

Packit ae235b
 was registered.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

extension

Packit ae235b

a GIOExtension

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

the priority of extension

Packit ae235b

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_io_extension_get_type ()

Packit ae235b
GType
Packit ae235b
g_io_extension_get_type (GIOExtension *extension);
Packit ae235b

Gets the type associated with extension

Packit ae235b
.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

extension

Packit ae235b

a GIOExtension

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

the type of extension

Packit ae235b

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_io_extension_point_get_extension_by_name ()

Packit ae235b
GIOExtension *
Packit ae235b
g_io_extension_point_get_extension_by_name
Packit ae235b
                               (GIOExtensionPoint *extension_point,
Packit ae235b
                                const char *name);
Packit ae235b

Finds a GIOExtension for an extension point by name.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

extension_point

Packit ae235b

a GIOExtensionPoint

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b

name

Packit ae235b

the name of the extension to get

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

the GIOExtension for extension_point

Packit ae235b
that has the
Packit ae235b
given name, or NULL if there is no extension with that name. 

Packit ae235b

[transfer none]

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_io_extension_point_get_extensions ()

Packit ae235b
GList *
Packit ae235b
g_io_extension_point_get_extensions (GIOExtensionPoint *extension_point);
Packit ae235b

Gets a list of all extensions that implement this extension point.

Packit ae235b
The list is sorted by priority, beginning with the highest priority.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

extension_point

Packit ae235b

a GIOExtensionPoint

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

a GList of

Packit ae235b
GIOExtensions. The list is owned by GIO and should not be
Packit ae235b
modified. 

Packit ae235b

[element-type GIOExtension][transfer none]

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_io_extension_point_get_required_type ()

Packit ae235b
GType
Packit ae235b
g_io_extension_point_get_required_type
Packit ae235b
                               (GIOExtensionPoint *extension_point);
Packit ae235b

Gets the required type for extension_point

Packit ae235b
.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

extension_point

Packit ae235b

a GIOExtensionPoint

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

the GType that all implementations must have,

Packit ae235b
or G_TYPE_INVALID if the extension point has no required type

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_io_extension_point_implement ()

Packit ae235b
GIOExtension *
Packit ae235b
g_io_extension_point_implement (const char *extension_point_name,
Packit ae235b
                                GType type,
Packit ae235b
                                const char *extension_name,
Packit ae235b
                                gint priority);
Packit ae235b

Registers type

Packit ae235b
 as extension for the extension point with name
Packit ae235b
extension_point_name
Packit ae235b
. 

Packit ae235b

If type

Packit ae235b
 has already been registered as an extension for this 
Packit ae235b
extension point, the existing GIOExtension object is returned.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

extension_point_name

Packit ae235b

the name of the extension point

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b

type

Packit ae235b

the GType to register as extension

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b

extension_name

Packit ae235b

the name for the extension

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b

priority

Packit ae235b

the priority for the extension

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

a GIOExtension object for GType.

Packit ae235b

[transfer none]

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_io_extension_point_lookup ()

Packit ae235b
GIOExtensionPoint *
Packit ae235b
g_io_extension_point_lookup (const char *name);
Packit ae235b

Looks up an existing extension point.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

name

Packit ae235b

the name of the extension point

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

the GIOExtensionPoint, or NULL if there

Packit ae235b
is no registered extension point with the given name. 

Packit ae235b

[transfer none]

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_io_extension_point_register ()

Packit ae235b
GIOExtensionPoint *
Packit ae235b
g_io_extension_point_register (const char *name);
Packit ae235b

Registers an extension point.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

name

Packit ae235b

The name of the extension point

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

the new GIOExtensionPoint. This object is

Packit ae235b
owned by GIO and should not be freed. 

Packit ae235b

[transfer none]

Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_io_extension_point_set_required_type ()

Packit ae235b
void
Packit ae235b
g_io_extension_point_set_required_type
Packit ae235b
                               (GIOExtensionPoint *extension_point,
Packit ae235b
                                GType type);
Packit ae235b

Sets the required type for extension_point

Packit ae235b
 to type
Packit ae235b
. 
Packit ae235b
All implementations must henceforth have this type.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

extension_point

Packit ae235b

a GIOExtensionPoint

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b

type

Packit ae235b

the GType to require

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

g_io_extension_ref_class ()

Packit ae235b
GTypeClass *
Packit ae235b
g_io_extension_ref_class (GIOExtension *extension);
Packit ae235b

Gets a reference to the class for the type that is

Packit ae235b
associated with extension
Packit ae235b
.

Packit ae235b
Packit ae235b

Parameters

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

extension

Packit ae235b

a GIOExtension

Packit ae235b
 
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Returns

Packit ae235b

the GTypeClass for the type of extension

Packit ae235b
. 

Packit ae235b

[transfer full]

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Types and Values

Packit ae235b
Packit ae235b

GIOExtension

Packit ae235b
typedef struct _GIOExtension GIOExtension;
Packit ae235b

GIOExtension is an opaque data structure and can only be accessed

Packit ae235b
using the following functions.

Packit ae235b
Packit ae235b

Packit ae235b
Packit ae235b

GIOExtensionPoint

Packit ae235b
typedef struct _GIOExtensionPoint GIOExtensionPoint;
Packit ae235b

GIOExtensionPoint is an opaque data structure and can only be accessed

Packit ae235b
using the following functions.

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

See Also

Packit ae235b

Extending GIO

Packit ae235b
Packit ae235b
Packit ae235b
Packit ae235b

Generated by GTK-Doc V1.27
Packit ae235b
</body>
Packit ae235b
</html>