Added RID::is_valid() and comparison operators

- is_valid() is worked around by comparing a default RID()
pull/75/head
Marc Gilleron 2018-01-20 19:37:23 +01:00
parent 51f1d3ce5d
commit 06c61b6535
2 changed files with 47 additions and 1 deletions

View File

@ -11,12 +11,24 @@ class RID {
godot_rid _godot_rid; godot_rid _godot_rid;
public: public:
inline RID() {} RID();
RID(Object *p); RID(Object *p);
int32_t get_rid() const; 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;
}; };
} }

View File

@ -6,6 +6,10 @@
namespace godot { namespace godot {
RID::RID()
{
godot::api->godot_rid_new(&_godot_rid);
}
RID::RID(Object *p) RID::RID(Object *p)
{ {
@ -17,5 +21,35 @@ int32_t RID::get_rid() const
return godot::api->godot_rid_get_id(&_godot_rid); 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);
}
} }