Class IOExtensionPoint

java.lang.Object
org.javagi.base.ProxyInstance
org.gnome.gio.IOExtensionPoint
All Implemented Interfaces:
Proxy

@Generated("org.javagi.JavaGI") public class IOExtensionPoint extends ProxyInstance

GIOExtensionPoint provides a mechanism for modules to extend the functionality of the library or application that loaded it in an organized fashion.

An extension point is identified by a name, and it may optionally require that any implementation must be of a certain type (or derived thereof). Use register(String) to register an extension point, and setRequiredType(Type) to set a required type.

A module can implement an extension point by specifying the GObject.Type that implements the functionality. Additionally, each implementation of an extension point has a name, and a priority. Use implement(String, Type, String, int) to implement an extension point.

GIOExtensionPoint *ep;

// Register an extension point
ep = g_io_extension_point_register ("my-extension-point");
g_io_extension_point_set_required_type (ep, MY_TYPE_EXAMPLE);
// Implement an extension point
G_DEFINE_TYPE (MyExampleImpl, my_example_impl, MY_TYPE_EXAMPLE)
g_io_extension_point_implement ("my-extension-point",
                                my_example_impl_get_type (),
                                "my-example",
                                10);

It is up to the code that registered the extension point how it uses the implementations that have been associated with it. Depending on the use case, it may use all implementations, or only the one with the highest priority, or pick a specific one by name.

To avoid opening all modules just to find out what extension points they implement, GIO makes use of a caching mechanism, see gio-querymodules. You are expected to run this command after installing a GIO module.

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

  • Constructor Details

    • IOExtensionPoint

      public IOExtensionPoint(MemorySegment address)
      Create a IOExtensionPoint proxy instance for the provided memory address.
      Parameters:
      address - the memory address of the native object
  • Method Details

    • getMemoryLayout

      public static MemoryLayout getMemoryLayout()
      The memory layout of the native struct.
      Returns:
      the memory layout
    • implement

      public static IOExtension implement(String extensionPointName, Type type, String extensionName, int priority)

      Registers type as extension for the extension point with name extensionPointName.

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

      Parameters:
      extensionPointName - the name of the extension point
      type - the GType to register as extension
      extensionName - the name for the extension
      priority - the priority for the extension
      Returns:
      a GIOExtension object for GType
    • lookup

      public static IOExtensionPoint lookup(String name)
      Looks up an existing extension point.
      Parameters:
      name - the name of the extension point
      Returns:
      the GIOExtensionPoint, or null if there is no registered extension point with the given name.
    • register

      public static IOExtensionPoint register(String name)
      Registers an extension point.
      Parameters:
      name - The name of the extension point
      Returns:
      the new GIOExtensionPoint. This object is owned by GIO and should not be freed.
    • getExtensionByName

      public IOExtension getExtensionByName(String name)
      Finds a GIOExtension for an extension point by name.
      Parameters:
      name - the name of the extension to get
      Returns:
      the GIOExtension for this IOExtensionPoint that has the given name, or null if there is no extension with that name
    • getExtensions

      public List<IOExtension> getExtensions()
      Gets a list of all extensions that implement this extension point. The list is sorted by priority, beginning with the highest priority.
      Returns:
      a GList of GIOExtensions. The list is owned by GIO and should not be modified.
    • getRequiredType

      public Type getRequiredType()
      Gets the required type for extensionPoint.
      Returns:
      the GType that all implementations must have, or G_TYPE_INVALID if the extension point has no required type
    • setRequiredType

      public void setRequiredType(Type type)
      Sets the required type for this IOExtensionPoint to type. All implementations must henceforth have this type.
      Parameters:
      type - the GType to require