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

Expose ClassDB::class_get_api_type method #376

Merged
merged 1 commit into from
Mar 17, 2025
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
15 changes: 14 additions & 1 deletion core/core_bind.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1410,6 +1410,11 @@ Variant ClassDB::instantiate(const StringName &p_class) const {
}
}

ClassDB::APIType ClassDB::class_get_api_type(const StringName &p_class) const {
::ClassDB::APIType api_type = ::ClassDB::get_api_type(p_class);
return (APIType)api_type;
}

bool ClassDB::class_has_signal(const StringName &p_class, const StringName &p_signal) const {
return ::ClassDB::has_signal(p_class, p_signal);
}
Expand Down Expand Up @@ -1581,7 +1586,7 @@ void ClassDB::get_argument_options(const StringName &p_function, int p_idx, List
pf == "class_has_method" || pf == "class_get_method_list" ||
pf == "class_get_integer_constant_list" || pf == "class_has_integer_constant" || pf == "class_get_integer_constant" ||
pf == "class_has_enum" || pf == "class_get_enum_list" || pf == "class_get_enum_constants" || pf == "class_get_integer_constant_enum" ||
pf == "is_class_enabled" || pf == "is_class_enum_bitfield");
pf == "is_class_enabled" || pf == "is_class_enum_bitfield" || pf == "class_get_api_type");
}
if (first_argument_is_class || pf == "is_parent_class") {
for (const String &E : get_class_list()) {
Expand All @@ -1602,6 +1607,8 @@ void ClassDB::_bind_methods() {
::ClassDB::bind_method(D_METHOD("can_instantiate", "class"), &ClassDB::can_instantiate);
::ClassDB::bind_method(D_METHOD("instantiate", "class"), &ClassDB::instantiate);

::ClassDB::bind_method(D_METHOD("class_get_api_type", "class"), &ClassDB::class_get_api_type);

::ClassDB::bind_method(D_METHOD("class_has_signal", "class", "signal"), &ClassDB::class_has_signal);
::ClassDB::bind_method(D_METHOD("class_get_signal", "class", "signal"), &ClassDB::class_get_signal);
::ClassDB::bind_method(D_METHOD("class_get_signal_list", "class", "no_inheritance"), &ClassDB::class_get_signal_list, DEFVAL(false));
Expand Down Expand Up @@ -1631,6 +1638,12 @@ void ClassDB::_bind_methods() {
::ClassDB::bind_method(D_METHOD("is_class_enum_bitfield", "class", "enum", "no_inheritance"), &ClassDB::is_class_enum_bitfield, DEFVAL(false));

::ClassDB::bind_method(D_METHOD("is_class_enabled", "class"), &ClassDB::is_class_enabled);

BIND_ENUM_CONSTANT(API_CORE);
BIND_ENUM_CONSTANT(API_EDITOR);
BIND_ENUM_CONSTANT(API_EXTENSION);
BIND_ENUM_CONSTANT(API_EDITOR_EXTENSION);
BIND_ENUM_CONSTANT(API_NONE);
}

} // namespace special
Expand Down
11 changes: 11 additions & 0 deletions core/core_bind.h
Original file line number Diff line number Diff line change
Expand Up @@ -436,6 +436,14 @@ class ClassDB : public Object {
static void _bind_methods();

public:
enum APIType {
API_CORE,
API_EDITOR,
API_EXTENSION,
API_EDITOR_EXTENSION,
API_NONE,
};

PackedStringArray get_class_list() const;
PackedStringArray get_inheriters_from_class(const StringName &p_class) const;
StringName get_parent_class(const StringName &p_class) const;
Expand All @@ -444,6 +452,7 @@ class ClassDB : public Object {
bool can_instantiate(const StringName &p_class) const;
Variant instantiate(const StringName &p_class) const;

APIType class_get_api_type(const StringName &p_class) const;
bool class_has_signal(const StringName &p_class, const StringName &p_signal) const;
Dictionary class_get_signal(const StringName &p_class, const StringName &p_signal) const;
TypedArray<Dictionary> class_get_signal_list(const StringName &p_class, bool p_no_inheritance = false) const;
Expand Down Expand Up @@ -621,4 +630,6 @@ VARIANT_ENUM_CAST(core_bind::Geometry2D::PolyEndType);

VARIANT_ENUM_CAST(core_bind::Thread::Priority);

VARIANT_ENUM_CAST(core_bind::special::ClassDB::APIType);

#endif // CORE_BIND_H
24 changes: 24 additions & 0 deletions doc/classes/ClassDB.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,13 @@
Returns whether the specified [param class] is available or not.
</description>
</method>
<method name="class_get_api_type" qualifiers="const">
<return type="int" enum="ClassDB.APIType" />
<param index="0" name="class" type="StringName" />
<description>
Returns the API type of [param class]. See [enum APIType].
</description>
</method>
<method name="class_get_enum_constants" qualifiers="const">
<return type="PackedStringArray" />
<param index="0" name="class" type="StringName" />
Expand Down Expand Up @@ -218,4 +225,21 @@
</description>
</method>
</methods>
<constants>
<constant name="API_CORE" value="0" enum="APIType">
Native Core class type.
</constant>
<constant name="API_EDITOR" value="1" enum="APIType">
Native Editor class type.
</constant>
<constant name="API_EXTENSION" value="2" enum="APIType">
GDExtension class type.
</constant>
<constant name="API_EDITOR_EXTENSION" value="3" enum="APIType">
GDExtension Editor class type.
</constant>
<constant name="API_NONE" value="4" enum="APIType">
Unknown class type.
</constant>
</constants>
</class>
Loading