No destructors
This commit is contained in:
parent
2fd1efcc4e
commit
f5769045fc
34 changed files with 1701 additions and 1216 deletions
|
|
@ -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)[])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue