27 lines
557 B
Nim
27 lines
557 B
Nim
type
|
|
NatReturn* = object
|
|
ok*: bool
|
|
msg*: string
|
|
|
|
Native* = uint32
|
|
|
|
natProc = proc (args: seq[uint], retval: var uint): NatReturn
|
|
|
|
# NatReturn misc
|
|
|
|
proc natError*(msg: string): NatReturn =
|
|
NatReturn(ok: false, msg: msg)
|
|
|
|
const natOk* = NatReturn(ok: true)
|
|
|
|
# natives
|
|
|
|
var natives*: seq[natProc]
|
|
var nativeNames*: seq[string]
|
|
|
|
proc defNative*(name: string, action: natProc) =
|
|
natives.add(action)
|
|
nativeNames.add(name)
|
|
|
|
proc callNative*(native: Native, args: seq[uint], retval: var uint): NatReturn =
|
|
natives[native.int](args, retval) |