Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add class reference documentation for GDExtension & GDExtensionManager #86968

Merged
merged 1 commit into from
Jan 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions doc/classes/GDExtension.xml
Original file line number Diff line number Diff line change
@@ -1,49 +1,66 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="GDExtension" inherits="Resource" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A native library for GDExtension.
</brief_description>
<description>
The [GDExtension] resource type represents a [url=https://en.wikipedia.org/wiki/Shared_library]shared library[/url] which can expand the functionality of the engine. The [GDExtensionManager] singleton is responsible for loading, reloading, and unloading [GDExtension] resources.
[b]Note:[/b] GDExtension itself is not a scripting language and has no relation to [GDScript] resources.
</description>
<tutorials>
<link title="GDExtension overview">$DOCS_URL/tutorials/scripting/gdextension/what_is_gdextension.html</link>
<link title="GDExtension example in C++">$DOCS_URL/tutorials/scripting/gdextension/gdextension_cpp_example.html</link>
</tutorials>
<methods>
<method name="close_library">
<return type="void" />
<description>
Closes the current library.
Mickeon marked this conversation as resolved.
Show resolved Hide resolved
[b]Note:[/b] You normally should not call this method directly. This is handled automatically by [method GDExtensionManager.unload_extension].
</description>
</method>
<method name="get_minimum_library_initialization_level" qualifiers="const">
<return type="int" enum="GDExtension.InitializationLevel" />
<description>
Returns the lowest level required for this extension to be properly initialized (see the [enum InitializationLevel] enum).
</description>
</method>
<method name="initialize_library">
<return type="void" />
<param index="0" name="level" type="int" enum="GDExtension.InitializationLevel" />
<description>
Initializes the library bound to this GDextension at the given initialization [param level].
[b]Note:[/b] You normally should not call this method directly. This is handled automatically by [method GDExtensionManager.load_extension].
</description>
</method>
<method name="is_library_open" qualifiers="const">
<return type="bool" />
<description>
Returns [code]true[/code] if this extension's library has been opened.
</description>
</method>
<method name="open_library">
<return type="int" enum="Error" />
<param index="0" name="path" type="String" />
<param index="1" name="entry_symbol" type="String" />
<description>
Opens the library at the specified [param path].
[b]Note:[/b] You normally should not call this method directly. This is handled automatically by [method GDExtensionManager.load_extension].
</description>
</method>
</methods>
<constants>
<constant name="INITIALIZATION_LEVEL_CORE" value="0" enum="InitializationLevel">
The library is initialized at the same time as the core features of the engine.
</constant>
<constant name="INITIALIZATION_LEVEL_SERVERS" value="1" enum="InitializationLevel">
The library is initialized at the same time as the engine's servers (such as [RenderingServer] or [PhysicsServer3D]).
</constant>
<constant name="INITIALIZATION_LEVEL_SCENE" value="2" enum="InitializationLevel">
The library is initialized at the same time as the engine's scene-related classes.
</constant>
<constant name="INITIALIZATION_LEVEL_EDITOR" value="3" enum="InitializationLevel">
The library is initialized at the same time as the engine's editor classes. Only happens when loading the GDExtension in the editor.
</constant>
</constants>
</class>
19 changes: 18 additions & 1 deletion doc/classes/GDExtensionManager.xml
Original file line number Diff line number Diff line change
@@ -1,65 +1,82 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="GDExtensionManager" inherits="Object" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Provides access to GDExtension functionality.
</brief_description>
<description>
The GDExtensionManager loads, initializes, and keeps track of all available [GDExtension] libraries in the project.
[b]Note:[/b] Do not worry about GDExtension unless you know what you are doing.
</description>
<tutorials>
<link title="GDExtension overview">$DOCS_URL/tutorials/scripting/gdextension/what_is_gdextension.html</link>
<link title="GDExtension example in C++">$DOCS_URL/tutorials/scripting/gdextension/gdextension_cpp_example.html</link>
</tutorials>
<methods>
<method name="get_extension">
<return type="GDExtension" />
<param index="0" name="path" type="String" />
<description>
Returns the [GDExtension] at the given file [param path], or [code]null[/code] if it has not been loaded or does not exist.
</description>
</method>
<method name="get_loaded_extensions" qualifiers="const">
<return type="PackedStringArray" />
<description>
Returns the file paths of all currently loaded extensions.
</description>
</method>
<method name="is_extension_loaded" qualifiers="const">
<return type="bool" />
<param index="0" name="path" type="String" />
<description>
Returns [code]true[/code] if the extension at the given file [param path] has already been loaded successfully. See also [method get_loaded_extensions].
</description>
</method>
<method name="load_extension">
<return type="int" enum="GDExtensionManager.LoadStatus" />
<param index="0" name="path" type="String" />
<description>
Loads an extension by absolute file path. The [param path] needs to point to a valid [GDExtension]. Returns [constant LOAD_STATUS_OK] if successful.
</description>
</method>
<method name="reload_extension">
<return type="int" enum="GDExtensionManager.LoadStatus" />
<param index="0" name="path" type="String" />
<description>
Reloads the extension at the given file path. The [param path] needs to point to a valid [GDExtension], otherwise this method may return either [constant LOAD_STATUS_NOT_LOADED] or [constant LOAD_STATUS_FAILED].
[b]Note:[/b] You can only reload extensions in the editor. In release builds, this method always fails and returns [constant LOAD_STATUS_FAILED].
</description>
</method>
<method name="unload_extension">
<return type="int" enum="GDExtensionManager.LoadStatus" />
<param index="0" name="path" type="String" />
<description>
Unloads an extension by file path. The [param path] needs to point to an already loaded [GDExtension], otherwise this method returns [constant LOAD_STATUS_NOT_LOADED].
</description>
</method>
</methods>
<signals>
<signal name="extensions_reloaded">
<description>
Emitted after the editor has automatically reloaded any extensions.
Emitted after the editor has finished reloading one or more extensions.
</description>
</signal>
</signals>
<constants>
<constant name="LOAD_STATUS_OK" value="0" enum="LoadStatus">
The extension has loaded successfully.
</constant>
<constant name="LOAD_STATUS_FAILED" value="1" enum="LoadStatus">
The extension has failed to load, possibly because it does not exist or has missing dependencies.
</constant>
<constant name="LOAD_STATUS_ALREADY_LOADED" value="2" enum="LoadStatus">
The extension has already been loaded.
</constant>
<constant name="LOAD_STATUS_NOT_LOADED" value="3" enum="LoadStatus">
The extension has not been loaded.
</constant>
<constant name="LOAD_STATUS_NEEDS_RESTART" value="4" enum="LoadStatus">
The extension requires the application to restart to fully load.
</constant>
</constants>
</class>
Loading