Skip to content

Commit 949d24b

Browse files
committed
Expose ClassDB::class_get_api_type method
1 parent 514c564 commit 949d24b

File tree

3 files changed

+49
-1
lines changed

3 files changed

+49
-1
lines changed

core/core_bind.cpp

+14-1
Original file line numberDiff line numberDiff line change
@@ -1413,6 +1413,11 @@ Variant ClassDB::instantiate(const StringName &p_class) const {
14131413
}
14141414
}
14151415

1416+
ClassDB::APIType ClassDB::class_get_api_type(const StringName &p_class) const {
1417+
::ClassDB::APIType api_type = ::ClassDB::get_api_type(p_class);
1418+
return (APIType)api_type;
1419+
}
1420+
14161421
bool ClassDB::class_has_signal(const StringName &p_class, const StringName &p_signal) const {
14171422
return ::ClassDB::has_signal(p_class, p_signal);
14181423
}
@@ -1609,7 +1614,7 @@ void ClassDB::get_argument_options(const StringName &p_function, int p_idx, List
16091614
pf == "class_has_method" || pf == "class_get_method_list" ||
16101615
pf == "class_get_integer_constant_list" || pf == "class_has_integer_constant" || pf == "class_get_integer_constant" ||
16111616
pf == "class_has_enum" || pf == "class_get_enum_list" || pf == "class_get_enum_constants" || pf == "class_get_integer_constant_enum" ||
1612-
pf == "is_class_enabled" || pf == "is_class_enum_bitfield");
1617+
pf == "is_class_enabled" || pf == "is_class_enum_bitfield" || pf == "class_get_api_type");
16131618
}
16141619
if (first_argument_is_class || pf == "is_parent_class") {
16151620
for (const String &E : get_class_list()) {
@@ -1630,6 +1635,8 @@ void ClassDB::_bind_methods() {
16301635
::ClassDB::bind_method(D_METHOD("can_instantiate", "class"), &ClassDB::can_instantiate);
16311636
::ClassDB::bind_method(D_METHOD("instantiate", "class"), &ClassDB::instantiate);
16321637

1638+
::ClassDB::bind_method(D_METHOD("class_get_api_type", "class"), &ClassDB::class_get_api_type);
1639+
16331640
::ClassDB::bind_method(D_METHOD("class_has_signal", "class", "signal"), &ClassDB::class_has_signal);
16341641
::ClassDB::bind_method(D_METHOD("class_get_signal", "class", "signal"), &ClassDB::class_get_signal);
16351642
::ClassDB::bind_method(D_METHOD("class_get_signal_list", "class", "no_inheritance"), &ClassDB::class_get_signal_list, DEFVAL(false));
@@ -1663,6 +1670,12 @@ void ClassDB::_bind_methods() {
16631670
::ClassDB::bind_method(D_METHOD("is_class_enum_bitfield", "class", "enum", "no_inheritance"), &ClassDB::is_class_enum_bitfield, DEFVAL(false));
16641671

16651672
::ClassDB::bind_method(D_METHOD("is_class_enabled", "class"), &ClassDB::is_class_enabled);
1673+
1674+
BIND_ENUM_CONSTANT(API_CORE);
1675+
BIND_ENUM_CONSTANT(API_EDITOR);
1676+
BIND_ENUM_CONSTANT(API_EXTENSION);
1677+
BIND_ENUM_CONSTANT(API_EDITOR_EXTENSION);
1678+
BIND_ENUM_CONSTANT(API_NONE);
16661679
}
16671680

16681681
} // namespace special

core/core_bind.h

+11
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,14 @@ class ClassDB : public Object {
441441
static void _bind_methods();
442442

443443
public:
444+
enum APIType {
445+
API_CORE,
446+
API_EDITOR,
447+
API_EXTENSION,
448+
API_EDITOR_EXTENSION,
449+
API_NONE,
450+
};
451+
444452
PackedStringArray get_class_list() const;
445453
PackedStringArray get_inheriters_from_class(const StringName &p_class) const;
446454
StringName get_parent_class(const StringName &p_class) const;
@@ -449,6 +457,7 @@ class ClassDB : public Object {
449457
bool can_instantiate(const StringName &p_class) const;
450458
Variant instantiate(const StringName &p_class) const;
451459

460+
APIType class_get_api_type(const StringName &p_class) const;
452461
bool class_has_signal(const StringName &p_class, const StringName &p_signal) const;
453462
Dictionary class_get_signal(const StringName &p_class, const StringName &p_signal) const;
454463
TypedArray<Dictionary> class_get_signal_list(const StringName &p_class, bool p_no_inheritance = false) const;
@@ -628,4 +637,6 @@ VARIANT_ENUM_CAST(core_bind::Geometry2D::PolyEndType);
628637

629638
VARIANT_ENUM_CAST(core_bind::Thread::Priority);
630639

640+
VARIANT_ENUM_CAST(core_bind::special::ClassDB::APIType);
641+
631642
#endif // CORE_BIND_H

doc/classes/ClassDB.xml

+24
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,13 @@
3131
Returns whether the specified [param class] is available or not.
3232
</description>
3333
</method>
34+
<method name="class_get_api_type" qualifiers="const">
35+
<return type="int" enum="ClassDB.APIType" />
36+
<param index="0" name="class" type="StringName" />
37+
<description>
38+
Returns the API type of [param class]. See [enum APIType].
39+
</description>
40+
</method>
3441
<method name="class_get_enum_constants" qualifiers="const">
3542
<return type="PackedStringArray" />
3643
<param index="0" name="class" type="StringName" />
@@ -242,4 +249,21 @@
242249
</description>
243250
</method>
244251
</methods>
252+
<constants>
253+
<constant name="API_CORE" value="0" enum="APIType">
254+
Native Core class type.
255+
</constant>
256+
<constant name="API_EDITOR" value="1" enum="APIType">
257+
Native Editor class type.
258+
</constant>
259+
<constant name="API_EXTENSION" value="2" enum="APIType">
260+
GDExtension class type.
261+
</constant>
262+
<constant name="API_EDITOR_EXTENSION" value="3" enum="APIType">
263+
GDExtension Editor class type.
264+
</constant>
265+
<constant name="API_NONE" value="4" enum="APIType">
266+
Unknown class type.
267+
</constant>
268+
</constants>
245269
</class>

0 commit comments

Comments
 (0)