froth/common

Source   Edit  

Types

PointerLike = auto
anything that can be cast to pointer not restricted for now since it can break with forwarded ref types Source   Edit  
Tagged[T; Tag] = object
  rawValue*: T
Source   Edit  

Consts

frothUseBytes {.booldefine.} = false
Source   Edit  
frothUsePointer {.booldefine.} = false
Source   Edit  

Procs

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

Templates

template implUintPointerTags(UintTag: untyped; splitTagVar = false) {.dirty.}
Source   Edit  
template raw[T, Tag](x: Tagged[T, Tag]): T
Source   Edit  
template rawMut[T, Tag](x: var Tagged[T, Tag]): T
Source   Edit  
template rawTagged[T, Tag](x: T): Tagged[T, Tag]
Source   Edit  
template setRaw[T, Tag](x: var Tagged[T, Tag]; val: T)
Source   Edit