froth/condensate

Source   Edit  

Types

Condensate[T; Base] = object
Source   Edit  
CondensateFieldKind = enum
  CondensateTag, CondensateValue
Source   Edit  

Procs

proc `=copy`[T, Base](dest: var Condensate[T, Base]; src: Condensate[T, Base]) {.
    nodestroy.}
Source   Edit  
proc `=destroy`[T, Base](x: Condensate[T, Base]) {.nodestroy, ...raises: [],
    raises: [].}
Source   Edit  
proc `=dup`[T, Base](x: Condensate[T, Base]): Condensate[T, Base] {.nodestroy.}
Source   Edit  
proc `=sink`[T, Base](dest: var Condensate[T, Base]; src: Condensate[T, Base]) {.
    nodestroy.}
Source   Edit  
proc `=trace`[T, Base](x: var Condensate[T, Base]; env: pointer) {.nodestroy.}
Source   Edit  
proc `=wasMoved`[T, Base](x: var Condensate[T, Base])
Source   Edit  
proc condensate[T; Base, Tag](x: T; _: typedesc[Tagged[Base, Tag]]): Condensate[
    T, Tagged[Base, Tag]] {.inline, nodestroy.}
Source   Edit  
proc decondense[T; Base, Tag](x: Condensate[T, Tagged[Base, Tag]]): T {.inline,
    nodestroy.}
Source   Edit  

Templates

template condensateInline[T; Base, Tag](_: typedesc[T]; tag: Tag; base: Base): Condensate[
    T, Tagged[Base, Tag]]
Source   Edit  
template rawCondensate[T; Base, Tag](t: typedesc[
    Condensate[T, Tagged[Base, Tag]]]; tag: Tag; base: Base): t:type
Source   Edit  
template rawDecondense[T; Base, Tag; V](val: Condensate[T, Tagged[Base, Tag]];
                                        _: typedesc[V]): V
Source   Edit  
template rawTag[T; Base, Tag](val: Condensate[T, Tagged[Base, Tag]]): Tag
Source   Edit