froth/lowershort

Search:
Group by:
Source   Edit  

Types

LowerShort = distinct LowerShortImpl

uses last 2 bytes as tag, shifts pointer left by 2 bytes, sign extends when converting to pointer

tag bytes are addressable

Source   Edit  
LowerShortImpl = uint16
Source   Edit  

Procs

proc splitTag(tagged: Tagged[uint, LowerShort]): LowerShort {.inline,
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc splitTag[T: PointerLike](tagged: Tagged[T, LowerShort]): LowerShort {.
    inline.}
Source   Edit  
proc splitTagMut(tagged: var Tagged[uint, LowerShort]): var LowerShort {.inline,
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc splitTagMut[T: PointerLike](tagged: var Tagged[T, LowerShort]): var LowerShort
Source   Edit  
proc tagLowerShort[T](val: T; tag: LowerShortImpl): LowerShortTagged[T] {.inline.}
Source   Edit  
proc untag(tagged: Tagged[uint, LowerShort]): uint {.inline, ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc untag[T: PointerLike](tagged: Tagged[T, LowerShort]): T {.inline.}
Source   Edit  
proc withTag(val: uint; tag: LowerShort): Tagged[uint, LowerShort] {.inline,
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc withTag[T: PointerLike](val: T; t: LowerShort): Tagged[T, LowerShort] {.
    inline.}
Source   Edit  

Templates

template `[]`[T: PointerLike](tagged: Tagged[T, LowerShort]): untyped
Source   Edit  
template getTag[T](tagged: LowerShortTagged[T]): LowerShortImpl
Source   Edit  
template getTagMut[T](tagged: LowerShortTagged[T]): LowerShortImpl
Source   Edit  
template isNil[T: PointerLike](tagged: Tagged[T, LowerShort]): bool
Source   Edit  
template splitTagInline(tagged: Tagged[uint, LowerShort]): LowerShort
Source   Edit  
template splitTagInline[T: PointerLike](tagged: Tagged[T, LowerShort]): LowerShort
Source   Edit  
template splitTagMutInline(tagged: var Tagged[uint, LowerShort]): var LowerShort
Source   Edit  
template splitTagMutInline[T: PointerLike](tagged: var Tagged[T, LowerShort]): var LowerShort
Source   Edit  
template untagInline(tagged: Tagged[uint, LowerShort]): uint
Source   Edit  
template untagInline[T: PointerLike](tagged: Tagged[T, LowerShort]): T
Source   Edit  
template withTagInline(val: uint; tag: LowerShort): Tagged[uint, LowerShort]
Source   Edit  
template withTagInline[T: PointerLike](val: T; t: LowerShort): Tagged[T,
    LowerShort]
Source   Edit