No destructors

This commit is contained in:
Ruslan Mustakov 2017-07-28 00:28:17 +07:00
commit f5769045fc
34 changed files with 1701 additions and 1216 deletions

View file

@ -1,135 +1,127 @@
# Copyright (c) 2017 Xored Software, Inc.
# Copyright 2017 Xored Software, Inc.
import hashes
import godotbase, poolarray, variant, strings
import "../internal/godotinternaltypes.nim", "../internal/godotarrays.nim"
proc initArray(dest: var Array) {.
importc: "godot_array_new".}
proc initArray(dest: var Array; pca: PoolColorArray) {.
importc: "godot_array_new_pool_coloarray".}
proc initArray(dest: var Array; pv3a: PoolVector3Array) {.
importc: "godot_array_new_pool_vector3_array".}
proc initArray(dest: var Array; pv2a: PoolVector2Array) {.
importc: "godot_array_new_pool_vector2_array".}
proc initArray(dest: var Array; psa: PoolStringArray) {.
importc: "godot_array_new_pool_string_array".}
proc initArray(dest: var Array; pra: PoolRealArray) {.
importc: "godot_array_new_pool_real_array".}
proc initArray(dest: var Array; pia: PoolIntArray) {.
importc: "godot_array_new_pool_int_array".}
proc initArray(dest: var Array; pba: PoolByteArray) {.
importc: "godot_array_new_pool_byte_array".}
import godotbase, poolarrays
proc initArray*(): Array {.inline.} =
initArray(result)
proc arrayFinalizer(arr: Array) =
arr.godotArray[].deinit()
proc initArray*(pca: PoolColorArray): Array {.inline.} =
initArray(result, pca)
proc newArray*(): Array {.inline.} =
new(result, arrayFinalizer)
initGodotArray(result.godotArray[])
proc initArray*(pv3a: PoolVector3Array): Array {.inline.} =
initArray(result, pv3a)
proc newArray*(arr: GodotArray): Array {.inline.} =
new(result, arrayFinalizer)
result.godotArray[] = arr
proc initArray*(pv2a: PoolVector2Array): Array {.inline.} =
initArray(result, pv2a)
proc newArray*(pca: PoolColorArray): Array {.inline.} =
new(result, arrayFinalizer)
initGodotArray(result.godotArray[], pca.godotPoolColorArray[])
proc initArray*(psa: PoolStringArray): Array {.inline.} =
initArray(result, psa)
proc newArray*(pv3a: PoolVector3Array): Array {.inline.} =
new(result, arrayFinalizer)
initGodotArray(result.godotArray[], pv3a.godotPoolVector3Array[])
proc initArray*(pra: PoolRealArray): Array {.inline.} =
initArray(result, pra)
proc newArray*(pv2a: PoolVector2Array): Array {.inline.} =
new(result, arrayFinalizer)
initGodotArray(result.godotArray[], pv2a.godotPoolVector2Array[])
proc initArray*(pia: PoolIntArray): Array {.inline.} =
initArray(result, pia)
proc newArray*(psa: PoolStringArray): Array {.inline.} =
new(result, arrayFinalizer)
initGodotArray(result.godotArray[], psa.godotPoolStringArray[])
proc initArray*(pba: PoolByteArray): Array {.inline.} =
initArray(result, pba)
proc newArray*(pra: PoolRealArray): Array {.inline.} =
new(result, arrayFinalizer)
initGodotArray(result.godotArray[], pra.godotPoolRealArray[])
proc `[]=`*(self: var Array; idx: cint;
value: Variant) {.
noSideEffect,
importc: "godot_array_set".}
proc `[]`*(self: Array; idx: cint): Variant {.
noSideEffect,
importc: "godot_array_get".}
proc mget*(self: var Array; idx: cint): ptr Variant {.
importc: "godot_array_operator_index".}
proc newArray*(pia: PoolIntArray): Array {.inline.} =
new(result, arrayFinalizer)
initGodotArray(result.godotArray[], pia.godotPoolIntArray[])
proc add*(self: var Array; value: Variant) {.
noSideEffect,
importc: "godot_array_append".}
proc clear*(self: var Array) {.importc: "godot_array_clear".}
proc count*(self: Array; value: Variant): cint {.
noSideEffect,
importc: "godot_array_count".}
proc isEmpty*(self: Array): bool {.
noSideEffect,
importc: "godot_array_empty".}
proc erase*(self: var Array; value: Variant) {.
importc: "godot_array_erase".}
proc first*(self: Array): Variant {.
noSideEffect,
importc: "godot_array_front".}
proc last*(self: Array): Variant {.
noSideEffect,
importc: "godot_array_back".}
proc find*(self: Array; what: Variant;
f: cint): cint {.
noSideEffect,
importc: "godot_array_find".}
proc findLast*(self: Array; what: Variant): cint {.
noSideEffect,
importc: "godot_array_find_last".}
proc contains*(self: Array; value: Variant): bool {.
noSideEffect,
importc: "godot_array_has".}
proc newArray*(pba: PoolByteArray): Array {.inline.} =
new(result, arrayFinalizer)
initGodotArray(result.godotArray[], pba.godotPoolByteArray[])
import variants
proc `[]=`*(self: var Array; idx: int; value: Variant) {.inline.} =
self.godotArray[][idx.cint] = value.godotVariant[]
proc `[]`*(self: Array; idx: int): Variant {.inline.} =
newVariant(self.godotArray[][idx.cint])
proc add*(self: var Array; value: Variant) {.inline.} =
self.godotArray[].add(value.godotVariant[])
proc clear*(self: var Array) {.inline.} =
self.godotArray[].clear()
proc count*(self: Array; value: Variant): int {.inline.} =
self.godotArray[].count(value.godotVariant[]).int
proc isEmpty*(self: Array): bool {.inline.} =
self.godotArray[].isEmpty()
proc erase*(self: var Array; value: Variant) {.inline.} =
self.godotArray[].erase(value.godotVariant[])
proc first*(self: Array): Variant {.inline.} =
newVariant(self.godotArray[].first())
proc last*(self: Array): Variant {.inline.} =
newVariant(self.godotArray[].last())
proc find*(self: Array; what: Variant; f: int): int {.inline.} =
self.godotArray[].find(what.godotVariant[], f.cint).int
proc findLast*(self: Array; what: Variant): int {.inline.} =
self.godotArray[].findLast(what.godotVariant[]).int
proc contains*(self: Array; value: Variant): bool {.inline.} =
self.godotArray[].contains(value.godotVariant[])
proc godotHash*(self: Array): cint {.
noSideEffect,
importc: "godot_array_hash".}
proc hash*(self: Array): Hash {.inline.} =
hash(godotHash(self))
hash(self.godotArray[].godotHash())
proc insert*(self: var Array; pos: cint;
value: Variant) {.
importc: "godot_array_insert".}
proc reverse*(self: var Array) {.importc: "godot_array_invert".}
proc popLast*(self: var Array): Variant {.
importc: "godot_array_pop_back".}
proc popFirst*(self: var Array): Variant {.
importc: "godot_array_pop_front".}
proc addLast*(self: var Array; value: Variant) {.
importc: "godot_array_push_back".}
proc addFirst*(self: var Array; value: Variant) {.
importc: "godot_array_push_front".}
proc insert*(self: var Array; pos: int; value: Variant) {.inline.} =
self.godotArray[].insert(pos.cint, value.godotVariant[])
proc delete*(self: var Array; idx: cint) {.
importc: "godot_array_remove".}
proc setLen*(self: var Array; size: cint) {.
importc: "godot_array_resize".}
proc rfind*(self: Array; what: Variant;
f: cint): cint {.
noSideEffect,
importc: "godot_array_rfind".}
proc len*(self: Array): cint {.
noSideEffect,
importc: "godot_array_size".}
proc sort*(self: var Array) {.importc: "godot_array_sort".}
proc sortCustom*(self: var Array; obj: var GodotObject;
funcName: GodotString) {.
importc: "godot_array_sort_custom".}
proc reverse*(self: var Array) {.inline.} =
self.godotArray[].reverse()
iterator items*(arr: Array): Variant =
proc popLast*(self: var Array): Variant {.inline.} =
newVariant(self.godotArray[].popLast())
proc popFirst*(self: var Array): Variant {.inline.} =
newVariant(self.godotArray[].popFirst())
proc addLast*(self: var Array; value: Variant) {.inline.} =
self.godotArray[].addLast(value.godotVariant[])
proc addFirst*(self: var Array; value: Variant) {.inline.} =
self.godotArray[].addFirst(value.godotVariant[])
proc delete*(self: var Array; idx: int) {.inline.} =
self.godotArray[].delete(idx.cint)
proc setLen*(self: var Array; size: int) {.inline.} =
self.godotArray[].setLen(size.cint)
proc rfind*(self: Array; what: Variant; f: int): int {.inline.} =
self.godotArray[].rfind(what.godotVariant[], f.cint).int
proc len*(self: Array): int {.inline.} =
self.godotArray[].len.int
proc sort*(self: var Array) {.inline.} =
self.godotArray[].sort()
iterator items*(arr: Array): Variant {.inline.} =
for i in 0..<arr.len:
yield arr[i]
iterator mitems*(arr: var Array): var Variant =
for i in 0..<arr.len:
yield arr.mget(i)[]
iterator pairs*(arr: Array): tuple[key: cint, val: Variant] =
iterator pairs*(arr: Array): tuple[key: int, val: Variant] {.inline.} =
for i in 0..<arr.len:
yield (i, arr[i])
iterator mpairs*(arr: var Array): tuple[key: cint, val: var Variant] =
for i in 0..<arr.len:
yield (i, arr.mget(i)[])