diff options
Diffstat (limited to 'modules/gdnative/godot/godot_node_path.cpp')
| -rw-r--r-- | modules/gdnative/godot/godot_node_path.cpp | 106 | 
1 files changed, 48 insertions, 58 deletions
diff --git a/modules/gdnative/godot/godot_node_path.cpp b/modules/gdnative/godot/godot_node_path.cpp index a2c9e11699..165688a340 100644 --- a/modules/gdnative/godot/godot_node_path.cpp +++ b/modules/gdnative/godot/godot_node_path.cpp @@ -28,91 +28,81 @@  /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */  /*************************************************************************/  #include "godot_node_path.h" +#include "core/variant.h" -#include "path_db.h" +#include "core/path_db.h"  #ifdef __cplusplus  extern "C" {  #endif -void _node_path_api_anchor() { -} - -#define memnew_placement_custom(m_placement, m_class, m_constr) _post_initialize(new (m_placement, sizeof(m_class), "") m_constr) - -// @Bug ? -// Do I need to memnew_placement when returning strings? +void _node_path_api_anchor() {} -void GDAPI godot_node_path_new(godot_node_path *p_np, const godot_string *p_from) { -	NodePath *np = (NodePath *)p_np; -	String *from = (String *)p_from; -	memnew_placement_custom(np, NodePath, NodePath(*from)); +void GDAPI godot_node_path_new(godot_node_path *r_dest, const godot_string *p_from) { +	NodePath *dest = (NodePath *)r_dest; +	const String *from = (const String *)p_from; +	memnew_placement(dest, NodePath(*from));  } -void GDAPI godot_node_path_copy(godot_node_path *p_np, const godot_node_path *p_from) { -	NodePath *np = (NodePath *)p_np; -	NodePath *from = (NodePath *)p_from; -	*np = *from; +void GDAPI godot_node_path_destroy(godot_node_path *p_self) { +	NodePath *self = (NodePath *)p_self; +	self->~NodePath();  } -godot_string GDAPI godot_node_path_get_name(const godot_node_path *p_np, const godot_int p_idx) { -	const NodePath *np = (const NodePath *)p_np; -	godot_string str; -	String *s = (String *)&str; -	memnew_placement(s, String); -	*s = np->get_name(p_idx); -	return str; +godot_string GDAPI godot_node_path_as_string(const godot_node_path *p_self) { +	godot_string ret; +	const NodePath *self = (const NodePath *)p_self; +	memnew_placement(&ret, String(*self)); +	return ret;  } -godot_int GDAPI godot_node_path_get_name_count(const godot_node_path *p_np) { -	const NodePath *np = (const NodePath *)p_np; -	return np->get_name_count(); +godot_bool GDAPI godot_node_path_is_absolute(const godot_node_path *p_self) { +	const NodePath *self = (const NodePath *)p_self; +	return self->is_absolute();  } -godot_string GDAPI godot_node_path_get_property(const godot_node_path *p_np) { -	const NodePath *np = (const NodePath *)p_np; -	godot_string str; -	String *s = (String *)&str; -	memnew_placement(s, String); -	*s = np->get_property(); -	return str; +godot_int GDAPI godot_node_path_get_name_count(const godot_node_path *p_self) { +	const NodePath *self = (const NodePath *)p_self; +	return self->get_name_count();  } -godot_string GDAPI godot_node_path_get_subname(const godot_node_path *p_np, const godot_int p_idx) { -	const NodePath *np = (const NodePath *)p_np; -	godot_string str; -	String *s = (String *)&str; -	memnew_placement(s, String); -	*s = np->get_subname(p_idx); -	return str; +godot_string GDAPI godot_node_path_get_name(const godot_node_path *p_self, const godot_int p_idx) { +	godot_string dest; +	const NodePath *self = (const NodePath *)p_self; + +	memnew_placement(&dest, String(self->get_name(p_idx))); +	return dest;  } -godot_int GDAPI godot_node_path_get_subname_count(const godot_node_path *p_np) { -	const NodePath *np = (const NodePath *)p_np; -	return np->get_subname_count(); +godot_int GDAPI godot_node_path_get_subname_count(const godot_node_path *p_self) { +	const NodePath *self = (const NodePath *)p_self; +	return self->get_subname_count();  } -godot_bool GDAPI godot_node_path_is_absolute(const godot_node_path *p_np) { -	const NodePath *np = (const NodePath *)p_np; -	return np->is_absolute(); +godot_string GDAPI godot_node_path_get_subname(const godot_node_path *p_self, const godot_int p_idx) { +	godot_string dest; +	const NodePath *self = (const NodePath *)p_self; + +	memnew_placement(&dest, String(self->get_subname(p_idx))); +	return dest;  } -godot_bool GDAPI godot_node_path_is_empty(const godot_node_path *p_np) { -	const NodePath *np = (const NodePath *)p_np; -	return np->is_empty(); +godot_string GDAPI godot_node_path_get_property(const godot_node_path *p_self) { +	godot_string dest; +	const NodePath *self = (const NodePath *)p_self; +	memnew_placement(&dest, String(self->get_property())); +	return dest;  } -godot_string GDAPI godot_node_path_as_string(const godot_node_path *p_np) { -	const NodePath *np = (const NodePath *)p_np; -	godot_string str; -	String *s = (String *)&str; -	memnew_placement(s, String); -	*s = *np; -	return str; +godot_bool GDAPI godot_node_path_is_empty(const godot_node_path *p_self) { +	const NodePath *self = (const NodePath *)p_self; +	return self->is_empty();  } -void GDAPI godot_node_path_destroy(godot_node_path *p_np) { -	((NodePath *)p_np)->~NodePath(); +godot_bool GDAPI godot_node_path_operator_equal(const godot_node_path *p_self, const godot_node_path *p_b) { +	const NodePath *self = (const NodePath *)p_self; +	const NodePath *b = (const NodePath *)p_b; +	return *self == *b;  }  #ifdef __cplusplus  |