inlining operator procs for efficiency
This commit is contained in:
parent
3007d51b86
commit
9fed85928d
10
value.nim
10
value.nim
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue