### Interface

# Gtk BuilderScope

since: 4.0

#### Description [src]

    interface Gtk.BuilderScope : GObject.Object

`GtkBuilderScope` is an interface to provide language binding support to `GtkBuilder`.

The goal of `GtkBuilderScope` is to look up programming-language-specific values for strings that are given in a `GtkBuilder` UI file.

The primary intended audience is bindings that want to provide deeper integration of `GtkBuilder` into the language.

A `GtkBuilderScope` instance may be used with multiple `GtkBuilder` objects, even at once.

By default, GTK will use its own implementation of `GtkBuilderScope` for the C language which can be created via `gtk_builder_cscope_new()`.

If you implement `GtkBuilderScope` for a language binding, you may want to (partially) derive from or fall back to a `GtkBuilderCScope`, as that class implements support for automatic lookups from C symbols.

Available since: 4.0

#### Prerequisite

In order to implement BuilderScope, your type must inherit from`GObject`.

#### Implementations

- GtkBuilderCScope

#### Interface structure

    struct GtkBuilderScopeInterface {
      GType (* get_type_from_name) (
        GtkBuilderScope* self,
        GtkBuilder* builder,
        const char* type_name
      );
      GType (* get_type_from_function) (
        GtkBuilderScope* self,
        GtkBuilder* builder,
        const char* function_name
      );
      GClosure* (* create_closure) (
        GtkBuilderScope* self,
        GtkBuilder* builder,
        const char* function_name,
        GtkBuilderClosureFlags flags,
        GObject* object,
        GError** error
      );

    }

The virtual function table to implement for `GtkBuilderScope` implementations. Default implementations for each function do exist, but they usually just fail, so it is suggested that implementations implement all of them.

###### Interface members

`get_type_from_name`

    GType (* get_type_from_name) (
        GtkBuilderScope* self,
        GtkBuilder* builder,
        const char* type_name
      )

| Try to lookup a `GType` via the its name. See `gtk_builder_get_type_from_name()` for more details. The C implementation will use `g_type_from_name()` and if that fails try to guess the correct function name for registering the type and then use `dlsym()` to load it. The default implementation just tries `g_type_from_name()` and otherwise fails.

`get_type_from_function`

    GType (* get_type_from_function) (
        GtkBuilderScope* self,
        GtkBuilder* builder,
        const char* function_name
      )

| Try to lookup a `GType` via the given function name, specified explicitly in a GtkBuilder file, like via the “type-func” attribute in the `<object>` tag. This function is very rarely used. The C implementation will use `dlsym()` and call the resulting function as a `GTypeFunc`. The default implementation will fail and just return `G_TYPE_INVALID`.

`create_closure`

    GClosure* (* create_closure) (
        GtkBuilderScope* self,
        GtkBuilder* builder,
        const char* function_name,
        GtkBuilderClosureFlags flags,
        GObject* object,
        GError** error
      )

| Create a closure with the given arguments. See `gtk_builder_create_closure()` for more details on those. The C implementation will try to use `dlsym()` to locate the function name and then `g_cclosure_new()` to create a closure for the symbol. The default implementation just fails and returns `NULL`.

#### Virtual methods

###### Gtk.BuilderScope.create_closure

Create a closure with the given arguments. See `gtk_builder_create_closure()` for more details on those. The C implementation will try to use `dlsym()` to locate the function name and then `g_cclosure_new()` to create a closure for the symbol. The default implementation just fails and returns `NULL`.

since: 4.0

###### Gtk.BuilderScope.get_type_from_function

Try to lookup a `GType` via the given function name, specified explicitly in a GtkBuilder file, like via the “type-func” attribute in the `<object>` tag. This function is very rarely used. The C implementation will use `dlsym()` and call the resulting function as a `GTypeFunc`. The default implementation will fail and just return `G_TYPE_INVALID`.

since: 4.0

###### Gtk.BuilderScope.get_type_from_name

Try to lookup a `GType` via the its name. See `gtk_builder_get_type_from_name()` for more details. The C implementation will use `g_type_from_name()` and if that fails try to guess the correct function name for registering the type and then use `dlsym()` to load it. The default implementation just tries `g_type_from_name()` and otherwise fails.

since: 4.0