summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Gilleron <marc.gilleron@gmail.com>2018-01-20 19:37:23 +0100
committerMarc Gilleron <marc.gilleron@gmail.com>2018-01-20 19:37:23 +0100
commit06c61b65355e59acfe64ab94515abce77c5724c7 (patch)
tree6c1ee3292dc433f2f675da3b17952fad925c49b8
parent51f1d3ce5d4e40522b99115140e560772c77f765 (diff)
downloadredot-cpp-06c61b65355e59acfe64ab94515abce77c5724c7.tar.gz
Added RID::is_valid() and comparison operators
- is_valid() is worked around by comparing a default RID()
-rw-r--r--include/core/RID.hpp14
-rw-r--r--src/core/RID.cpp34
2 files changed, 47 insertions, 1 deletions
diff --git a/include/core/RID.hpp b/include/core/RID.hpp
index 3a968bf..71b5140 100644
--- a/include/core/RID.hpp
+++ b/include/core/RID.hpp
@@ -11,12 +11,24 @@ class RID {
godot_rid _godot_rid;
public:
- inline RID() {}
+ RID();
RID(Object *p);
int32_t get_rid() const;
+ inline bool is_valid() const {
+ // is_valid() is not available in the C API...
+ return *this == RID();
+ }
+
+ bool operator==(const RID & p_other) const;
+ bool operator!=(const RID & p_other) const;
+ bool operator<(const RID & p_other) const;
+ bool operator>(const RID & p_other) const;
+ bool operator<=(const RID & p_other) const;
+ bool operator>=(const RID & p_other) const;
+
};
}
diff --git a/src/core/RID.cpp b/src/core/RID.cpp
index 05f2931..aaf8e7a 100644
--- a/src/core/RID.cpp
+++ b/src/core/RID.cpp
@@ -6,6 +6,10 @@
namespace godot {
+RID::RID()
+{
+ godot::api->godot_rid_new(&_godot_rid);
+}
RID::RID(Object *p)
{
@@ -17,5 +21,35 @@ int32_t RID::get_rid() const
return godot::api->godot_rid_get_id(&_godot_rid);
}
+bool RID::operator==(const RID & p_other) const
+{
+ return godot::api->godot_rid_operator_equal(&_godot_rid, &p_other._godot_rid);
+}
+
+bool RID::operator!=(const RID & p_other) const
+{
+ return !(*this == p_other);
+}
+
+bool RID::operator<(const RID & p_other) const
+{
+ return godot::api->godot_rid_operator_less(&_godot_rid, &p_other._godot_rid);
+}
+
+bool RID::operator>(const RID & p_other) const
+{
+ return !(*this < p_other) && *this != p_other;
+}
+
+bool RID::operator<=(const RID & p_other) const
+{
+ return (*this < p_other) || *this == p_other;
+}
+
+bool RID::operator>=(const RID & p_other) const
+{
+ return !(*this < p_other);
+}
+
}