PoolArrays.cpp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571
  1. /*************************************************************************/
  2. /* PoolArrays.cpp */
  3. /*************************************************************************/
  4. /* This file is part of: */
  5. /* GODOT ENGINE */
  6. /* https://godotengine.org */
  7. /*************************************************************************/
  8. /* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
  9. /* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
  10. /* */
  11. /* Permission is hereby granted, free of charge, to any person obtaining */
  12. /* a copy of this software and associated documentation files (the */
  13. /* "Software"), to deal in the Software without restriction, including */
  14. /* without limitation the rights to use, copy, modify, merge, publish, */
  15. /* distribute, sublicense, and/or sell copies of the Software, and to */
  16. /* permit persons to whom the Software is furnished to do so, subject to */
  17. /* the following conditions: */
  18. /* */
  19. /* The above copyright notice and this permission notice shall be */
  20. /* included in all copies or substantial portions of the Software. */
  21. /* */
  22. /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
  23. /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
  24. /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
  25. /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
  26. /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
  27. /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
  28. /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
  29. /*************************************************************************/
  30. #include "PoolArrays.hpp"
  31. #include "Color.hpp"
  32. #include "Defs.hpp"
  33. #include "GodotGlobal.hpp"
  34. #include "String.hpp"
  35. #include "Vector2.hpp"
  36. #include "Vector3.hpp"
  37. #include <gdnative/pool_arrays.h>
  38. namespace godot {
  39. PoolByteArray::PoolByteArray() {
  40. godot::api->godot_pool_byte_array_new(&_godot_array);
  41. }
  42. PoolByteArray::PoolByteArray(const PoolByteArray &p_other) {
  43. godot::api->godot_pool_byte_array_new_copy(&_godot_array, &p_other._godot_array);
  44. }
  45. PoolByteArray &PoolByteArray::operator=(const PoolByteArray &p_other) {
  46. godot::api->godot_pool_byte_array_destroy(&_godot_array);
  47. godot::api->godot_pool_byte_array_new_copy(&_godot_array, &p_other._godot_array);
  48. return *this;
  49. }
  50. PoolByteArray::PoolByteArray(const Array &array) {
  51. godot::api->godot_pool_byte_array_new_with_array(&_godot_array, (godot_array *)&array);
  52. }
  53. PoolByteArray::Read PoolByteArray::read() const {
  54. Read read;
  55. read._read_access = godot::api->godot_pool_byte_array_read(&_godot_array);
  56. return read;
  57. }
  58. PoolByteArray::Write PoolByteArray::write() {
  59. Write write;
  60. write._write_access = godot::api->godot_pool_byte_array_write(&_godot_array);
  61. return write;
  62. }
  63. void PoolByteArray::append(const uint8_t data) {
  64. godot::api->godot_pool_byte_array_append(&_godot_array, data);
  65. }
  66. void PoolByteArray::append_array(const PoolByteArray &array) {
  67. godot::api->godot_pool_byte_array_append_array(&_godot_array, &array._godot_array);
  68. }
  69. int PoolByteArray::insert(const int idx, const uint8_t data) {
  70. return godot::api->godot_pool_byte_array_insert(&_godot_array, idx, data);
  71. }
  72. void PoolByteArray::invert() {
  73. godot::api->godot_pool_byte_array_invert(&_godot_array);
  74. }
  75. void PoolByteArray::push_back(const uint8_t data) {
  76. godot::api->godot_pool_byte_array_push_back(&_godot_array, data);
  77. }
  78. void PoolByteArray::remove(const int idx) {
  79. godot::api->godot_pool_byte_array_remove(&_godot_array, idx);
  80. }
  81. void PoolByteArray::resize(const int size) {
  82. godot::api->godot_pool_byte_array_resize(&_godot_array, size);
  83. }
  84. void PoolByteArray::set(const int idx, const uint8_t data) {
  85. godot::api->godot_pool_byte_array_set(&_godot_array, idx, data);
  86. }
  87. uint8_t PoolByteArray::operator[](const int idx) {
  88. return godot::api->godot_pool_byte_array_get(&_godot_array, idx);
  89. }
  90. int PoolByteArray::size() const {
  91. return godot::api->godot_pool_byte_array_size(&_godot_array);
  92. }
  93. PoolByteArray::~PoolByteArray() {
  94. godot::api->godot_pool_byte_array_destroy(&_godot_array);
  95. }
  96. PoolIntArray::PoolIntArray() {
  97. godot::api->godot_pool_int_array_new(&_godot_array);
  98. }
  99. PoolIntArray::PoolIntArray(const PoolIntArray &p_other) {
  100. godot::api->godot_pool_int_array_new_copy(&_godot_array, &p_other._godot_array);
  101. }
  102. PoolIntArray &PoolIntArray::operator=(const PoolIntArray &p_other) {
  103. godot::api->godot_pool_int_array_destroy(&_godot_array);
  104. godot::api->godot_pool_int_array_new_copy(&_godot_array, &p_other._godot_array);
  105. return *this;
  106. }
  107. PoolIntArray::PoolIntArray(const Array &array) {
  108. godot::api->godot_pool_int_array_new_with_array(&_godot_array, (godot_array *)&array);
  109. }
  110. PoolIntArray::Read PoolIntArray::read() const {
  111. Read read;
  112. read._read_access = godot::api->godot_pool_int_array_read(&_godot_array);
  113. return read;
  114. }
  115. PoolIntArray::Write PoolIntArray::write() {
  116. Write write;
  117. write._write_access = godot::api->godot_pool_int_array_write(&_godot_array);
  118. return write;
  119. }
  120. void PoolIntArray::append(const int data) {
  121. godot::api->godot_pool_int_array_append(&_godot_array, data);
  122. }
  123. void PoolIntArray::append_array(const PoolIntArray &array) {
  124. godot::api->godot_pool_int_array_append_array(&_godot_array, &array._godot_array);
  125. }
  126. int PoolIntArray::insert(const int idx, const int data) {
  127. return godot::api->godot_pool_int_array_insert(&_godot_array, idx, data);
  128. }
  129. void PoolIntArray::invert() {
  130. godot::api->godot_pool_int_array_invert(&_godot_array);
  131. }
  132. void PoolIntArray::push_back(const int data) {
  133. godot::api->godot_pool_int_array_push_back(&_godot_array, data);
  134. }
  135. void PoolIntArray::remove(const int idx) {
  136. godot::api->godot_pool_int_array_remove(&_godot_array, idx);
  137. }
  138. void PoolIntArray::resize(const int size) {
  139. godot::api->godot_pool_int_array_resize(&_godot_array, size);
  140. }
  141. void PoolIntArray::set(const int idx, const int data) {
  142. godot::api->godot_pool_int_array_set(&_godot_array, idx, data);
  143. }
  144. int PoolIntArray::operator[](const int idx) {
  145. return godot::api->godot_pool_int_array_get(&_godot_array, idx);
  146. }
  147. int PoolIntArray::size() const {
  148. return godot::api->godot_pool_int_array_size(&_godot_array);
  149. }
  150. PoolIntArray::~PoolIntArray() {
  151. godot::api->godot_pool_int_array_destroy(&_godot_array);
  152. }
  153. PoolRealArray::PoolRealArray() {
  154. godot::api->godot_pool_real_array_new(&_godot_array);
  155. }
  156. PoolRealArray::PoolRealArray(const PoolRealArray &p_other) {
  157. godot::api->godot_pool_real_array_new_copy(&_godot_array, &p_other._godot_array);
  158. }
  159. PoolRealArray &PoolRealArray::operator=(const PoolRealArray &p_other) {
  160. godot::api->godot_pool_real_array_destroy(&_godot_array);
  161. godot::api->godot_pool_real_array_new_copy(&_godot_array, &p_other._godot_array);
  162. return *this;
  163. }
  164. PoolRealArray::Read PoolRealArray::read() const {
  165. Read read;
  166. read._read_access = godot::api->godot_pool_real_array_read(&_godot_array);
  167. return read;
  168. }
  169. PoolRealArray::Write PoolRealArray::write() {
  170. Write write;
  171. write._write_access = godot::api->godot_pool_real_array_write(&_godot_array);
  172. return write;
  173. }
  174. PoolRealArray::PoolRealArray(const Array &array) {
  175. godot::api->godot_pool_real_array_new_with_array(&_godot_array, (godot_array *)&array);
  176. }
  177. void PoolRealArray::append(const real_t data) {
  178. godot::api->godot_pool_real_array_append(&_godot_array, data);
  179. }
  180. void PoolRealArray::append_array(const PoolRealArray &array) {
  181. godot::api->godot_pool_real_array_append_array(&_godot_array, &array._godot_array);
  182. }
  183. int PoolRealArray::insert(const int idx, const real_t data) {
  184. return godot::api->godot_pool_real_array_insert(&_godot_array, idx, data);
  185. }
  186. void PoolRealArray::invert() {
  187. godot::api->godot_pool_real_array_invert(&_godot_array);
  188. }
  189. void PoolRealArray::push_back(const real_t data) {
  190. godot::api->godot_pool_real_array_push_back(&_godot_array, data);
  191. }
  192. void PoolRealArray::remove(const int idx) {
  193. godot::api->godot_pool_real_array_remove(&_godot_array, idx);
  194. }
  195. void PoolRealArray::resize(const int size) {
  196. godot::api->godot_pool_real_array_resize(&_godot_array, size);
  197. }
  198. void PoolRealArray::set(const int idx, const real_t data) {
  199. godot::api->godot_pool_real_array_set(&_godot_array, idx, data);
  200. }
  201. real_t PoolRealArray::operator[](const int idx) {
  202. return godot::api->godot_pool_real_array_get(&_godot_array, idx);
  203. }
  204. int PoolRealArray::size() const {
  205. return godot::api->godot_pool_real_array_size(&_godot_array);
  206. }
  207. PoolRealArray::~PoolRealArray() {
  208. godot::api->godot_pool_real_array_destroy(&_godot_array);
  209. }
  210. PoolStringArray::PoolStringArray() {
  211. godot::api->godot_pool_string_array_new(&_godot_array);
  212. }
  213. PoolStringArray::PoolStringArray(const PoolStringArray &p_other) {
  214. godot::api->godot_pool_string_array_new_copy(&_godot_array, &p_other._godot_array);
  215. }
  216. PoolStringArray &PoolStringArray::operator=(const PoolStringArray &p_other) {
  217. godot::api->godot_pool_string_array_destroy(&_godot_array);
  218. godot::api->godot_pool_string_array_new_copy(&_godot_array, &p_other._godot_array);
  219. return *this;
  220. }
  221. PoolStringArray::PoolStringArray(const Array &array) {
  222. godot::api->godot_pool_string_array_new_with_array(&_godot_array, (godot_array *)&array);
  223. }
  224. PoolStringArray::Read PoolStringArray::read() const {
  225. Read read;
  226. read._read_access = godot::api->godot_pool_string_array_read(&_godot_array);
  227. return read;
  228. }
  229. PoolStringArray::Write PoolStringArray::write() {
  230. Write write;
  231. write._write_access = godot::api->godot_pool_string_array_write(&_godot_array);
  232. return write;
  233. }
  234. void PoolStringArray::append(const String &data) {
  235. godot::api->godot_pool_string_array_append(&_godot_array, (godot_string *)&data);
  236. }
  237. void PoolStringArray::append_array(const PoolStringArray &array) {
  238. godot::api->godot_pool_string_array_append_array(&_godot_array, &array._godot_array);
  239. }
  240. int PoolStringArray::insert(const int idx, const String &data) {
  241. return godot::api->godot_pool_string_array_insert(&_godot_array, idx, (godot_string *)&data);
  242. }
  243. void PoolStringArray::invert() {
  244. godot::api->godot_pool_string_array_invert(&_godot_array);
  245. }
  246. void PoolStringArray::push_back(const String &data) {
  247. godot::api->godot_pool_string_array_push_back(&_godot_array, (godot_string *)&data);
  248. }
  249. void PoolStringArray::remove(const int idx) {
  250. godot::api->godot_pool_string_array_remove(&_godot_array, idx);
  251. }
  252. void PoolStringArray::resize(const int size) {
  253. godot::api->godot_pool_string_array_resize(&_godot_array, size);
  254. }
  255. void PoolStringArray::set(const int idx, const String &data) {
  256. godot::api->godot_pool_string_array_set(&_godot_array, idx, (godot_string *)&data);
  257. }
  258. const String PoolStringArray::operator[](const int idx) {
  259. String s;
  260. godot_string str = godot::api->godot_pool_string_array_get(&_godot_array, idx);
  261. godot::api->godot_string_new_copy((godot_string *)&s, &str);
  262. godot::api->godot_string_destroy(&str);
  263. return s;
  264. }
  265. int PoolStringArray::size() const {
  266. return godot::api->godot_pool_string_array_size(&_godot_array);
  267. }
  268. PoolStringArray::~PoolStringArray() {
  269. godot::api->godot_pool_string_array_destroy(&_godot_array);
  270. }
  271. PoolVector2Array::PoolVector2Array() {
  272. godot::api->godot_pool_vector2_array_new(&_godot_array);
  273. }
  274. PoolVector2Array::PoolVector2Array(const PoolVector2Array &p_other) {
  275. godot::api->godot_pool_vector2_array_new_copy(&_godot_array, &p_other._godot_array);
  276. }
  277. PoolVector2Array &PoolVector2Array::operator=(const PoolVector2Array &p_other) {
  278. godot::api->godot_pool_vector2_array_destroy(&_godot_array);
  279. godot::api->godot_pool_vector2_array_new_copy(&_godot_array, &p_other._godot_array);
  280. return *this;
  281. }
  282. PoolVector2Array::PoolVector2Array(const Array &array) {
  283. godot::api->godot_pool_vector2_array_new_with_array(&_godot_array, (godot_array *)&array);
  284. }
  285. PoolVector2Array::Read PoolVector2Array::read() const {
  286. Read read;
  287. read._read_access = godot::api->godot_pool_vector2_array_read(&_godot_array);
  288. return read;
  289. }
  290. PoolVector2Array::Write PoolVector2Array::write() {
  291. Write write;
  292. write._write_access = godot::api->godot_pool_vector2_array_write(&_godot_array);
  293. return write;
  294. }
  295. void PoolVector2Array::append(const Vector2 &data) {
  296. godot::api->godot_pool_vector2_array_append(&_godot_array, (godot_vector2 *)&data);
  297. }
  298. void PoolVector2Array::append_array(const PoolVector2Array &array) {
  299. godot::api->godot_pool_vector2_array_append_array(&_godot_array, &array._godot_array);
  300. }
  301. int PoolVector2Array::insert(const int idx, const Vector2 &data) {
  302. return godot::api->godot_pool_vector2_array_insert(&_godot_array, idx, (godot_vector2 *)&data);
  303. }
  304. void PoolVector2Array::invert() {
  305. godot::api->godot_pool_vector2_array_invert(&_godot_array);
  306. }
  307. void PoolVector2Array::push_back(const Vector2 &data) {
  308. godot::api->godot_pool_vector2_array_push_back(&_godot_array, (godot_vector2 *)&data);
  309. }
  310. void PoolVector2Array::remove(const int idx) {
  311. godot::api->godot_pool_vector2_array_remove(&_godot_array, idx);
  312. }
  313. void PoolVector2Array::resize(const int size) {
  314. godot::api->godot_pool_vector2_array_resize(&_godot_array, size);
  315. }
  316. void PoolVector2Array::set(const int idx, const Vector2 &data) {
  317. godot::api->godot_pool_vector2_array_set(&_godot_array, idx, (godot_vector2 *)&data);
  318. }
  319. const Vector2 PoolVector2Array::operator[](const int idx) {
  320. Vector2 v;
  321. *(godot_vector2 *)&v = godot::api->godot_pool_vector2_array_get(&_godot_array, idx);
  322. return v;
  323. }
  324. int PoolVector2Array::size() const {
  325. return godot::api->godot_pool_vector2_array_size(&_godot_array);
  326. }
  327. PoolVector2Array::~PoolVector2Array() {
  328. godot::api->godot_pool_vector2_array_destroy(&_godot_array);
  329. }
  330. PoolVector3Array::PoolVector3Array() {
  331. godot::api->godot_pool_vector3_array_new(&_godot_array);
  332. }
  333. PoolVector3Array::PoolVector3Array(const PoolVector3Array &p_other) {
  334. godot::api->godot_pool_vector3_array_new_copy(&_godot_array, &p_other._godot_array);
  335. }
  336. PoolVector3Array &PoolVector3Array::operator=(const PoolVector3Array &p_other) {
  337. godot::api->godot_pool_vector3_array_destroy(&_godot_array);
  338. godot::api->godot_pool_vector3_array_new_copy(&_godot_array, &p_other._godot_array);
  339. return *this;
  340. }
  341. PoolVector3Array::PoolVector3Array(const Array &array) {
  342. godot::api->godot_pool_vector3_array_new_with_array(&_godot_array, (godot_array *)&array);
  343. }
  344. PoolVector3Array::Read PoolVector3Array::read() const {
  345. Read read;
  346. read._read_access = godot::api->godot_pool_vector3_array_read(&_godot_array);
  347. return read;
  348. }
  349. PoolVector3Array::Write PoolVector3Array::write() {
  350. Write write;
  351. write._write_access = godot::api->godot_pool_vector3_array_write(&_godot_array);
  352. return write;
  353. }
  354. void PoolVector3Array::append(const Vector3 &data) {
  355. godot::api->godot_pool_vector3_array_append(&_godot_array, (godot_vector3 *)&data);
  356. }
  357. void PoolVector3Array::append_array(const PoolVector3Array &array) {
  358. godot::api->godot_pool_vector3_array_append_array(&_godot_array, &array._godot_array);
  359. }
  360. int PoolVector3Array::insert(const int idx, const Vector3 &data) {
  361. return godot::api->godot_pool_vector3_array_insert(&_godot_array, idx, (godot_vector3 *)&data);
  362. }
  363. void PoolVector3Array::invert() {
  364. godot::api->godot_pool_vector3_array_invert(&_godot_array);
  365. }
  366. void PoolVector3Array::push_back(const Vector3 &data) {
  367. godot::api->godot_pool_vector3_array_push_back(&_godot_array, (godot_vector3 *)&data);
  368. }
  369. void PoolVector3Array::remove(const int idx) {
  370. godot::api->godot_pool_vector3_array_remove(&_godot_array, idx);
  371. }
  372. void PoolVector3Array::resize(const int size) {
  373. godot::api->godot_pool_vector3_array_resize(&_godot_array, size);
  374. }
  375. void PoolVector3Array::set(const int idx, const Vector3 &data) {
  376. godot::api->godot_pool_vector3_array_set(&_godot_array, idx, (godot_vector3 *)&data);
  377. }
  378. const Vector3 PoolVector3Array::operator[](const int idx) {
  379. Vector3 v;
  380. *(godot_vector3 *)&v = godot::api->godot_pool_vector3_array_get(&_godot_array, idx);
  381. return v;
  382. }
  383. int PoolVector3Array::size() const {
  384. return godot::api->godot_pool_vector3_array_size(&_godot_array);
  385. }
  386. PoolVector3Array::~PoolVector3Array() {
  387. godot::api->godot_pool_vector3_array_destroy(&_godot_array);
  388. }
  389. PoolColorArray::PoolColorArray() {
  390. godot::api->godot_pool_color_array_new(&_godot_array);
  391. }
  392. PoolColorArray::PoolColorArray(const PoolColorArray &p_other) {
  393. godot::api->godot_pool_color_array_new_copy(&_godot_array, &p_other._godot_array);
  394. }
  395. PoolColorArray &PoolColorArray::operator=(const PoolColorArray &p_other) {
  396. godot::api->godot_pool_color_array_destroy(&_godot_array);
  397. godot::api->godot_pool_color_array_new_copy(&_godot_array, &p_other._godot_array);
  398. return *this;
  399. }
  400. PoolColorArray::PoolColorArray(const Array &array) {
  401. godot::api->godot_pool_color_array_new_with_array(&_godot_array, (godot_array *)&array);
  402. }
  403. PoolColorArray::Read PoolColorArray::read() const {
  404. Read read;
  405. read._read_access = godot::api->godot_pool_color_array_read(&_godot_array);
  406. return read;
  407. }
  408. PoolColorArray::Write PoolColorArray::write() {
  409. Write write;
  410. write._write_access = godot::api->godot_pool_color_array_write(&_godot_array);
  411. return write;
  412. }
  413. void PoolColorArray::append(const Color &data) {
  414. godot::api->godot_pool_color_array_append(&_godot_array, (godot_color *)&data);
  415. }
  416. void PoolColorArray::append_array(const PoolColorArray &array) {
  417. godot::api->godot_pool_color_array_append_array(&_godot_array, &array._godot_array);
  418. }
  419. int PoolColorArray::insert(const int idx, const Color &data) {
  420. return godot::api->godot_pool_color_array_insert(&_godot_array, idx, (godot_color *)&data);
  421. }
  422. void PoolColorArray::invert() {
  423. godot::api->godot_pool_color_array_invert(&_godot_array);
  424. }
  425. void PoolColorArray::push_back(const Color &data) {
  426. godot::api->godot_pool_color_array_push_back(&_godot_array, (godot_color *)&data);
  427. }
  428. void PoolColorArray::remove(const int idx) {
  429. godot::api->godot_pool_color_array_remove(&_godot_array, idx);
  430. }
  431. void PoolColorArray::resize(const int size) {
  432. godot::api->godot_pool_color_array_resize(&_godot_array, size);
  433. }
  434. void PoolColorArray::set(const int idx, const Color &data) {
  435. godot::api->godot_pool_color_array_set(&_godot_array, idx, (godot_color *)&data);
  436. }
  437. const Color PoolColorArray::operator[](const int idx) {
  438. Color v;
  439. *(godot_color *)&v = godot::api->godot_pool_color_array_get(&_godot_array, idx);
  440. return v;
  441. }
  442. int PoolColorArray::size() const {
  443. return godot::api->godot_pool_color_array_size(&_godot_array);
  444. }
  445. PoolColorArray::~PoolColorArray() {
  446. godot::api->godot_pool_color_array_destroy(&_godot_array);
  447. }
  448. } // namespace godot