A wrapper factory returns the "fittest" wrapper object given a
pointer to a wrapped "thing".
A wrapper factory would implement the typing policy described in the
wrapper library documentation. In fact some libraries implement their
own type system like GObject, while other having smaller scopes will
describe the types of each returned pointer, sometime being polymorphic.
If the developer needs to create wrappers of several different types and
those types are pre-defined, known during the development of the
wrapper, for example when the actual returned type is explained in the
documentation of the library it is sometimes better to use (as a client)
one of its expanded variant, i.e. G_OBJECT_EXPANDED_FACTORY.
It could be newly created or
retrieved from a cache, a dictionary, from the underlying
object, depending on the implementation.
See also wrapper_or_void: when a_pointer is the
default pointer (known as NULL in C) Result will be Void.
This exception occurs when Void is passed as the expression
to inspect ("inspect on STRING only).
This exception also occurs when the inspected value selects no branch (when the keyword "else"
not used, one "when" branch _must_ be selected). Some value which is not one of the inspect
constants, if there is no Else_part