mirror of
https://github.com/Relintai/gdnative_cpp.git
synced 2024-11-12 10:25:31 +01:00
Variant cleanups, and added StringName.
This commit is contained in:
parent
1f3bdca877
commit
6b167533d6
@ -464,7 +464,7 @@ def generate_class_implementation(icalls, used_classes, c, use_template_get_node
|
||||
)
|
||||
|
||||
source.append("\tpandemonium_string_name class_name;")
|
||||
source.append('\tgodot::api->pandemonium_string_name_new_data(&class_name, "' + c["name"] + '");')
|
||||
source.append('\tgodot::api->pandemonium_string_name_new_data_char(&class_name, "' + c["name"] + '");')
|
||||
source.append("\t_detail_class_tag = godot::api->pandemonium_get_class_tag(&class_name);")
|
||||
source.append("\tgodot::api->pandemonium_string_name_destroy(&class_name);")
|
||||
|
||||
|
@ -45,6 +45,7 @@
|
||||
#include "RID.hpp"
|
||||
#include "Rect2.hpp"
|
||||
#include "String.hpp"
|
||||
#include "StringName.hpp"
|
||||
#include "Transform.hpp"
|
||||
#include "Transform2D.hpp"
|
||||
#include "Variant.hpp"
|
||||
|
@ -42,6 +42,7 @@ class PoolIntArray;
|
||||
class PoolRealArray;
|
||||
class PoolStringArray;
|
||||
class String;
|
||||
class StringName;
|
||||
|
||||
class CharString {
|
||||
friend class String;
|
||||
@ -61,6 +62,7 @@ class String {
|
||||
friend class Dictionary;
|
||||
friend class NodePath;
|
||||
friend class Variant;
|
||||
friend class StringName;
|
||||
explicit inline String(pandemonium_string contents) :
|
||||
_pandemonium_string(contents) {}
|
||||
|
||||
|
72
include/core/StringName.hpp
Normal file
72
include/core/StringName.hpp
Normal file
@ -0,0 +1,72 @@
|
||||
/*************************************************************************/
|
||||
/* String.hpp */
|
||||
/*************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* https://godotengine.org */
|
||||
/*************************************************************************/
|
||||
/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
|
||||
/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/*************************************************************************/
|
||||
|
||||
#ifndef STRING_NAME_H
|
||||
#define STRING_NAME_H
|
||||
|
||||
#include <gdn/string_name.h>
|
||||
|
||||
namespace godot {
|
||||
|
||||
class String;
|
||||
|
||||
class StringName {
|
||||
pandemonium_string_name _pandemonium_string_name;
|
||||
|
||||
friend class Dictionary;
|
||||
friend class NodePath;
|
||||
friend class Variant;
|
||||
explicit inline StringName(pandemonium_string_name contents) :
|
||||
_pandemonium_string_name(contents) {}
|
||||
|
||||
public:
|
||||
StringName();
|
||||
StringName(const char *contents);
|
||||
StringName(const String &other);
|
||||
|
||||
~StringName();
|
||||
|
||||
operator String();
|
||||
|
||||
uint32_t get_hash();
|
||||
const void *get_data_unique_pointer();
|
||||
|
||||
bool operator==(const StringName &s) const;
|
||||
bool operator!=(const StringName &s) const;
|
||||
|
||||
bool operator<(const StringName &s) const;
|
||||
bool operator<=(const StringName &s) const;
|
||||
bool operator>(const StringName &s) const;
|
||||
bool operator>=(const StringName &s) const;
|
||||
};
|
||||
|
||||
} // namespace godot
|
||||
|
||||
#endif // STRING_H
|
@ -76,41 +76,51 @@ public:
|
||||
STRING,
|
||||
|
||||
// math types
|
||||
|
||||
VECTOR2, // 5
|
||||
RECT2,
|
||||
RECT2, // 5
|
||||
RECT2I,
|
||||
VECTOR2,
|
||||
VECTOR2I,
|
||||
VECTOR3,
|
||||
TRANSFORM2D,
|
||||
VECTOR3I, // 10
|
||||
VECTOR4,
|
||||
VECTOR4I,
|
||||
|
||||
PLANE,
|
||||
QUAT, // 10
|
||||
RECT3, //sorry naming convention fail :( not like it's used often
|
||||
QUATERNION,
|
||||
AABB, // 15
|
||||
BASIS,
|
||||
TRANSFORM,
|
||||
TRANSFORM2D,
|
||||
PROJECTION,
|
||||
|
||||
// misc types
|
||||
COLOR,
|
||||
NODE_PATH, // 15
|
||||
_RID,
|
||||
COLOR, // 20
|
||||
NODE_PATH,
|
||||
RID,
|
||||
OBJECT,
|
||||
DICTIONARY,
|
||||
STRING_NAME,
|
||||
DICTIONARY, // 25
|
||||
ARRAY,
|
||||
|
||||
// arrays
|
||||
POOL_BYTE_ARRAY, // 20
|
||||
POOL_BYTE_ARRAY,
|
||||
POOL_INT_ARRAY,
|
||||
POOL_REAL_ARRAY,
|
||||
POOL_STRING_ARRAY,
|
||||
POOL_STRING_ARRAY, // 30
|
||||
POOL_VECTOR2_ARRAY,
|
||||
POOL_VECTOR3_ARRAY, // 25
|
||||
POOL_VECTOR2I_ARRAY,
|
||||
POOL_VECTOR3_ARRAY,
|
||||
POOL_VECTOR3I_ARRAY,
|
||||
POOL_VECTOR4_ARRAY, // 35
|
||||
POOL_VECTOR4I_ARRAY,
|
||||
POOL_COLOR_ARRAY,
|
||||
|
||||
VARIANT_MAX
|
||||
|
||||
VARIANT_MAX // 38
|
||||
};
|
||||
|
||||
enum Operator {
|
||||
|
||||
//comparation
|
||||
// comparation
|
||||
OP_EQUAL,
|
||||
OP_NOT_EQUAL,
|
||||
OP_LESS,
|
||||
@ -118,7 +128,7 @@ public:
|
||||
OP_GREATER,
|
||||
OP_GREATER_EQUAL,
|
||||
|
||||
//mathematic
|
||||
// mathematic
|
||||
OP_ADD,
|
||||
OP_SUBSTRACT,
|
||||
OP_MULTIPLY,
|
||||
@ -128,7 +138,7 @@ public:
|
||||
OP_MODULE,
|
||||
OP_STRING_CONCAT,
|
||||
|
||||
//bitwise
|
||||
// bitwise
|
||||
OP_SHIFT_LEFT,
|
||||
OP_SHIFT_RIGHT,
|
||||
OP_BIT_AND,
|
||||
@ -136,13 +146,13 @@ public:
|
||||
OP_BIT_XOR,
|
||||
OP_BIT_NEGATE,
|
||||
|
||||
//logic
|
||||
// logic
|
||||
OP_AND,
|
||||
OP_OR,
|
||||
OP_XOR,
|
||||
OP_NOT,
|
||||
|
||||
//containment
|
||||
// containment
|
||||
OP_IN,
|
||||
OP_MAX
|
||||
|
||||
@ -177,6 +187,7 @@ public:
|
||||
Variant(double p_double);
|
||||
|
||||
Variant(const String &p_string);
|
||||
Variant(const StringName &p_string);
|
||||
|
||||
Variant(const char *const p_cstring);
|
||||
|
||||
@ -190,7 +201,7 @@ public:
|
||||
|
||||
Variant(const Plane &p_plane);
|
||||
|
||||
Variant(const AABB &p_aabb);
|
||||
Variant(const ::AABB &p_aabb);
|
||||
|
||||
Variant(const Quat &p_quat);
|
||||
|
||||
@ -204,7 +215,7 @@ public:
|
||||
|
||||
Variant(const NodePath &p_path);
|
||||
|
||||
Variant(const RID &p_rid);
|
||||
Variant(const ::RID &p_rid);
|
||||
|
||||
Variant(const Object *p_object);
|
||||
|
||||
@ -244,11 +255,12 @@ public:
|
||||
|
||||
operator double() const;
|
||||
operator String() const;
|
||||
operator StringName() const;
|
||||
operator Vector2() const;
|
||||
operator Rect2() const;
|
||||
operator Vector3() const;
|
||||
operator Plane() const;
|
||||
operator AABB() const;
|
||||
operator ::AABB() const;
|
||||
operator Quat() const;
|
||||
operator Basis() const;
|
||||
operator Transform() const;
|
||||
@ -257,7 +269,7 @@ public:
|
||||
operator Color() const;
|
||||
|
||||
operator NodePath() const;
|
||||
operator RID() const;
|
||||
operator ::RID() const;
|
||||
operator pandemonium_object *() const;
|
||||
|
||||
template <typename T>
|
||||
|
87
src/core/StringName.cpp
Normal file
87
src/core/StringName.cpp
Normal file
@ -0,0 +1,87 @@
|
||||
/*************************************************************************/
|
||||
/* String.cpp */
|
||||
/*************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* https://godotengine.org */
|
||||
/*************************************************************************/
|
||||
/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
|
||||
/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/*************************************************************************/
|
||||
|
||||
#include "StringName.hpp"
|
||||
|
||||
#include "Array.hpp"
|
||||
#include "GodotGlobal.hpp"
|
||||
#include "NodePath.hpp"
|
||||
#include "PoolArrays.hpp"
|
||||
#include "Variant.hpp"
|
||||
|
||||
#include <gdn/string.h>
|
||||
|
||||
#include <string.h>
|
||||
|
||||
namespace godot {
|
||||
|
||||
godot::StringName::StringName() {
|
||||
godot::api->pandemonium_string_name_new(&_pandemonium_string_name);
|
||||
}
|
||||
|
||||
StringName::StringName(const char *contents) {
|
||||
godot::api->pandemonium_string_name_new_data_char(&_pandemonium_string_name, contents);
|
||||
}
|
||||
|
||||
StringName::StringName(const String &other) {
|
||||
godot::api->pandemonium_string_name_new_data_string(&_pandemonium_string_name, &other._pandemonium_string);
|
||||
}
|
||||
|
||||
StringName::~StringName() {
|
||||
godot::api->pandemonium_string_name_destroy(&_pandemonium_string_name);
|
||||
}
|
||||
|
||||
|
||||
bool StringName::operator==(const StringName &s) const {
|
||||
return godot::api->pandemonium_string_name_operator_equal(&_pandemonium_string_name, &s._pandemonium_string_name);
|
||||
}
|
||||
|
||||
bool StringName::operator!=(const StringName &s) const {
|
||||
return !(*this == s);
|
||||
}
|
||||
|
||||
bool StringName::operator<(const StringName &s) const {
|
||||
return godot::api->pandemonium_string_name_operator_less(&_pandemonium_string_name, &s._pandemonium_string_name);
|
||||
}
|
||||
|
||||
bool StringName::operator<=(const StringName &s) const {
|
||||
return godot::api->pandemonium_string_name_operator_less(&_pandemonium_string_name, &s._pandemonium_string_name) ||
|
||||
(*this == s);
|
||||
}
|
||||
|
||||
bool StringName::operator>(const StringName &s) const {
|
||||
return !(*this <= s);
|
||||
}
|
||||
|
||||
bool StringName::operator>=(const StringName &s) const {
|
||||
return !(*this < s);
|
||||
}
|
||||
|
||||
} // namespace godot
|
@ -86,6 +86,10 @@ Variant::Variant(const String &p_string) {
|
||||
godot::api->pandemonium_variant_new_string(&_pandemonium_variant, (pandemonium_string *)&p_string);
|
||||
}
|
||||
|
||||
Variant::Variant(const StringName &p_string) {
|
||||
godot::api->pandemonium_variant_new_string_name(&_pandemonium_variant, (pandemonium_string_name *)&p_string);
|
||||
}
|
||||
|
||||
Variant::Variant(const char *const p_cstring) {
|
||||
String s = String(p_cstring);
|
||||
godot::api->pandemonium_variant_new_string(&_pandemonium_variant, (pandemonium_string *)&s);
|
||||
@ -112,7 +116,7 @@ Variant::Variant(const Plane &p_plane) {
|
||||
godot::api->pandemonium_variant_new_plane(&_pandemonium_variant, (pandemonium_plane *)&p_plane);
|
||||
}
|
||||
|
||||
Variant::Variant(const AABB &p_aabb) {
|
||||
Variant::Variant(const ::AABB &p_aabb) {
|
||||
godot::api->pandemonium_variant_new_aabb(&_pandemonium_variant, (pandemonium_aabb *)&p_aabb);
|
||||
}
|
||||
|
||||
@ -140,7 +144,7 @@ Variant::Variant(const NodePath &p_path) {
|
||||
godot::api->pandemonium_variant_new_node_path(&_pandemonium_variant, (pandemonium_node_path *)&p_path);
|
||||
}
|
||||
|
||||
Variant::Variant(const RID &p_rid) {
|
||||
Variant::Variant(const ::RID &p_rid) {
|
||||
godot::api->pandemonium_variant_new_rid(&_pandemonium_variant, (pandemonium_rid *)&p_rid);
|
||||
}
|
||||
|
||||
@ -237,6 +241,10 @@ Variant::operator String() const {
|
||||
pandemonium_string s = godot::api->pandemonium_variant_as_string(&_pandemonium_variant);
|
||||
return String(s);
|
||||
}
|
||||
Variant::operator StringName() const {
|
||||
pandemonium_string_name s = godot::api->pandemonium_variant_as_string_name(&_pandemonium_variant);
|
||||
return StringName(s);
|
||||
}
|
||||
Variant::operator Vector2() const {
|
||||
pandemonium_vector2 s = godot::api->pandemonium_variant_as_vector2(&_pandemonium_variant);
|
||||
return *(Vector2 *)&s;
|
||||
@ -253,9 +261,9 @@ Variant::operator Plane() const {
|
||||
pandemonium_plane s = godot::api->pandemonium_variant_as_plane(&_pandemonium_variant);
|
||||
return *(Plane *)&s;
|
||||
}
|
||||
Variant::operator AABB() const {
|
||||
Variant::operator ::AABB() const {
|
||||
pandemonium_aabb s = godot::api->pandemonium_variant_as_aabb(&_pandemonium_variant);
|
||||
return *(AABB *)&s;
|
||||
return *(::AABB *)&s;
|
||||
}
|
||||
Variant::operator Quat() const {
|
||||
pandemonium_quat s = godot::api->pandemonium_variant_as_quat(&_pandemonium_variant);
|
||||
@ -282,9 +290,9 @@ Variant::operator NodePath() const {
|
||||
pandemonium_node_path ret = godot::api->pandemonium_variant_as_node_path(&_pandemonium_variant);
|
||||
return NodePath(ret);
|
||||
}
|
||||
Variant::operator RID() const {
|
||||
Variant::operator ::RID() const {
|
||||
pandemonium_rid s = godot::api->pandemonium_variant_as_rid(&_pandemonium_variant);
|
||||
return *(RID *)&s;
|
||||
return *(::RID *)&s;
|
||||
}
|
||||
|
||||
Variant::operator Dictionary() const {
|
||||
|
Loading…
Reference in New Issue
Block a user