diff --git a/src/syndicate/membranes.nim b/src/syndicate/membranes.nim index 75d24ef..a1ba502 100644 --- a/src/syndicate/membranes.nim +++ b/src/syndicate/membranes.nim @@ -18,24 +18,20 @@ type oid: Oid `ref`: Ref count: int - when not defined(release): - mem: Membrane proc oid*(sym: WireSymbol): Oid = sym.oid proc `ref`*(sym: WireSymbol): Ref = sym.ref -proc grab*(mem: Membrane; key: Oid|Ref): WireSymbol = +proc grab*(mem: Membrane; key: Oid): WireSymbol = ## Grab a `WireSymbol` from a `Membrane`. - result = - when key is Oid: mem.byOid.getOrDefault(key) - elif key is Ref: mem.byRef.getOrDefault(key) - else: {.error.} - if not result.isNil: inc result.count + mem.byOid.getOrDefault(key) + +proc grab*(mem: Membrane; key: Ref): WireSymbol = + ## Grab a `WireSymbol` from a `Membrane`. + mem.byRef.getOrDefault(key) proc drop*(mem: var Membrane; sym: WireSymbol) = ## Drop a `WireSymbol` from a `Membrane`. - assert sym.mem == mem, "cannot drop WireSymbol at the wrong Membrane" - assert sym.count > 0 dec sym.count if sym.count < 1: mem.byOid.del sym.oid @@ -46,4 +42,3 @@ proc newWireSymbol*(mem: var Membrane; o: Oid; r: Ref): WireSymbol = result = WireSymbol(oid: o, `ref`: r, count: 1) mem.byOid[result.oid] = result mem.byRef[result.`ref`] = result - when not defined(release): result.mem = mem