diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2017-04-04 00:25:03 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-04 00:25:03 +0200 |
commit | 46bc14e66fe90430f1d74cdab6cca6acb5b2a3f6 (patch) | |
tree | 6d761531804ce9bb8e78b297598e06bea57dbe7b /modules/dlscript/godot/godot_node_path.cpp | |
parent | 57badfd1df3a554b7f47793e73a887874e5ca2b1 (diff) | |
parent | fd553087867187220d4f6b8217854dd8e9be2667 (diff) | |
download | redot-engine-46bc14e66fe90430f1d74cdab6cca6acb5b2a3f6.tar.gz |
Merge pull request #8246 from GodotNativeTools/dlscript-module
DLScript module
Diffstat (limited to 'modules/dlscript/godot/godot_node_path.cpp')
-rw-r--r-- | modules/dlscript/godot/godot_node_path.cpp | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/modules/dlscript/godot/godot_node_path.cpp b/modules/dlscript/godot/godot_node_path.cpp new file mode 100644 index 0000000000..cc0652c75b --- /dev/null +++ b/modules/dlscript/godot/godot_node_path.cpp @@ -0,0 +1,87 @@ +#include "godot_node_path.h" + +#include "path_db.h" + +#include <memory.h> // why is there no <cmemory> btw? + +#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 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)); +} + +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_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_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_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_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_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_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_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; +} + +void GDAPI godot_node_path_destroy(godot_node_path *p_np) { + ((NodePath *)p_np)->~NodePath(); +} + +#ifdef __cplusplus +} +#endif |