diff options
Diffstat (limited to 'compiler/vmops.nim')
-rw-r--r-- | compiler/vmops.nim | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/compiler/vmops.nim b/compiler/vmops.nim index b0911579e..2a00f207a 100644 --- a/compiler/vmops.nim +++ b/compiler/vmops.nim @@ -21,6 +21,9 @@ template mathop(op) {.dirty.} = template osop(op) {.dirty.} = registerCallback(c, "stdlib.os." & astToStr(op), `op Wrapper`) +template ospathsop(op) {.dirty.} = + registerCallback(c, "stdlib.ospaths." & astToStr(op), `op Wrapper`) + template systemop(op) {.dirty.} = registerCallback(c, "stdlib.system." & astToStr(op), `op Wrapper`) @@ -39,6 +42,16 @@ template wrap1s_os(op) {.dirty.} = setResult(a, op(getString(a, 0))) osop op +template wrap1s_ospaths(op) {.dirty.} = + proc `op Wrapper`(a: VmArgs) {.nimcall.} = + setResult(a, op(getString(a, 0))) + ospathsop op + +template wrap2s_ospaths(op) {.dirty.} = + proc `op Wrapper`(a: VmArgs) {.nimcall.} = + setResult(a, op(getString(a, 0), getString(a, 1))) + ospathsop op + template wrap1s_system(op) {.dirty.} = proc `op Wrapper`(a: VmArgs) {.nimcall.} = setResult(a, op(getString(a, 0))) @@ -88,8 +101,8 @@ proc registerAdditionalOps*(c: PCtx) = wrap1f_math(ceil) wrap2f_math(fmod) - wrap1s_os(getEnv) - wrap1s_os(existsEnv) + wrap2s_ospaths(getEnv) + wrap1s_ospaths(existsEnv) wrap1s_os(dirExists) wrap1s_os(fileExists) wrap2svoid_system(writeFile) |