turns procs into case statements dispatched over single case branch fields of an object variant argument
Example:
import skinsuit/dispatch type Foo = object case a: bool of false: x: int else: y: float proc addStr(s: var seq[string], a: int) = s.add("int " & $a) proc addStr(s: var seq[string], a: float) = s.add("float " & $a) proc addStr(s: var seq[string], f: Foo) {.dispatchCase: f.} var s: seq[string] var f: Foo addStr(s, f) f = Foo(a: true, y: 1.2) addStr(s, f) f.y = 3.4 addStr(s, f) f = Foo(a: false, x: 567) addStr(s, f) doAssert s == @["int 0", "float 1.2", "float 3.4", "int 567"]
Macros
macro dispatchCase(arg, prc)
- Source Edit
macro dispatchCase(prc)
- no specified argument to dispatch on, assumes the first argument Source Edit