inlining operator procs for efficiency

This commit is contained in:
prod2 2022-01-27 02:09:17 +01:00
parent 3007d51b86
commit 9fed85928d
1 changed files with 5 additions and 5 deletions

View File

@ -106,14 +106,14 @@ const natOk* = NatReturn(ok: true)
# OPERATIONS
# NOTE: these operations can return ktTypeError with a message if types are invalid
proc negate*(val: var KonValue): NatReturn =
proc negate*(val: var KonValue): NatReturn {.inline.} =
if (val.konType != ktFloat):
return natError("Operand must be a number.")
else:
val.floatValue = -val.floatValue
return natOk
proc add*(val: var KonValue, right: KonValue): NatReturn =
proc add*(val: var KonValue, right: KonValue): NatReturn {.inline.} =
if val.konType == ktFloat and right.konType == ktFloat:
val.floatValue += right.floatValue
elif val.konType == ktString and right.konType == ktString:
@ -122,21 +122,21 @@ proc add*(val: var KonValue, right: KonValue): NatReturn =
return natError(&"Attempt to add types {val.konType} and {right.konType}.")
return natOk
proc subtract*(val: var KonValue, right: KonValue): NatReturn =
proc subtract*(val: var KonValue, right: KonValue): NatReturn {.inline.} =
if val.konType == ktFloat and right.konType == ktFloat:
val.floatValue -= right.floatValue
else:
return natError(&"Attempt to subtract types {val.konType} and {right.konType}.")
return natOk
proc multiply*(val: var KonValue, right: KonValue): NatReturn =
proc multiply*(val: var KonValue, right: KonValue): NatReturn {.inline.} =
if val.konType == ktFloat and right.konType == ktFloat:
val.floatValue *= right.floatValue
else:
return natError(&"Attempt to multiply types {val.konType} and {right.konType}.")
return natOk
proc divide*(val: var KonValue, right: KonValue): NatReturn =
proc divide*(val: var KonValue, right: KonValue): NatReturn {.inline.} =
if val.konType == ktFloat and right.konType == ktFloat:
val.floatValue /= right.floatValue
else: