nir/nirtypes

Search:
Group by:
Source   Edit  

Type system for NIR. Close to C's type system but without its quirks.

Types

Literals = ref object
  strings*: BiTable[string]
  numbers*: BiTable[int64]
Source   Edit  
NirTypeKind = enum
  VoidTy, IntTy, UIntTy, FloatTy, BoolTy, CharTy, NameVal, IntVal, SizeVal,
  AlignVal, OffsetVal, AnnotationVal, ObjectTy, UnionTy, VarargsTy, APtrTy,
  UPtrTy, AArrayPtrTy, UArrayPtrTy, ArrayTy, LastArrayTy, ProcTy, ObjectDecl,
  UnionDecl, FieldDecl
Source   Edit  
TypeGraph = object
Source   Edit  
TypeId = distinct int
Source   Edit  
TypeNode = object
Source   Edit  
TypePatchPos = distinct int
Source   Edit  

Consts

Bool8Id = 1
Source   Edit  
Char8Id = 2
Source   Edit  
Float32Id = 11
Source   Edit  
Float64Id = 12
Source   Edit  
Int8Id = 3
Source   Edit  
Int16Id = 4
Source   Edit  
Int32Id = 5
Source   Edit  
Int64Id = 6
Source   Edit  
LastBuiltinId = 13
Source   Edit  
UInt8Id = 7
Source   Edit  
UInt16Id = 8
Source   Edit  
UInt32Id = 9
Source   Edit  
UInt64Id = 10
Source   Edit  
VoidId = 0
Source   Edit  
VoidPtrId = 13
Source   Edit  

Procs

proc `==`(a, b: TypeId): bool {.borrow, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc addAlign(g: var TypeGraph; a: int64) {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc addAnnotation(g: var TypeGraph; name: string) {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc addArrayLen(g: var TypeGraph; len: int64) {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc addBuiltinType(g: var TypeGraph; id: TypeId) {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc addField(g: var TypeGraph; name: string; typ: TypeId; offset: int64) {.
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc addName(g: var TypeGraph; name: string) {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc addNominalType(tree: var TypeGraph; kind: NirTypeKind; name: string) {.
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc addOffset(g: var TypeGraph; offset: int64) {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc addSize(g: var TypeGraph; s: int64) {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc addType(g: var TypeGraph; t: TypeId) {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc addVarargs(tree: var TypeGraph) {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc arrayLen(tree: TypeGraph; n: TypeId): BiggestInt {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc arrayName(tree: TypeGraph; n: TypeId): TypeId {.inline, ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc arrayPtrTypeOf(g: var TypeGraph; t: TypeId): TypeId {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc elementType(tree: TypeGraph; n: TypeId): TypeId {.inline, ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc finishType(tree: var TypeGraph; p: TypePatchPos): TypeId {....raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc getFloat128Type(tree: var TypeGraph): TypeId {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc getTypeTag(tree: TypeGraph; t: TypeId): string {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc hash(a: TypeId): Hash {.borrow, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc initTypeGraph(lit: Literals): TypeGraph {....raises: [], tags: [], forbids: [].}
Source   Edit  
proc integralBits(n: TypeNode): int {.inline, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc kind(tree: TypeGraph; n: TypeId): NirTypeKind {.inline, ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc len(tree: TypeGraph): int {.inline, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc litId(n: TypeNode): LitId {.inline, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc load(r: var RodFile; g: var TypeGraph) {....raises: [IOError],
    tags: [ReadIOEffect], forbids: [].}
Source   Edit  
proc nominalType(tree: var TypeGraph; kind: NirTypeKind; name: string): TypeId {.
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc openType(tree: var TypeGraph; kind: NirTypeKind): TypePatchPos {.
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc ptrTypeOf(g: var TypeGraph; t: TypeId): TypeId {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc returnType(tree: TypeGraph; n: TypeId): (TypeId, TypeId) {....raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc sealType(tree: var TypeGraph; p: TypePatchPos) {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc store(r: var RodFile; g: TypeGraph) {....raises: [IOError],
    tags: [WriteIOEffect], forbids: [].}
Source   Edit  
proc toString(dest: var string; g: TypeGraph) {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc toString(dest: var string; g: TypeGraph; i: TypeId) {....raises: [], tags: [],
    forbids: [].}
Source   Edit  

Iterators

iterator allTypes(g: TypeGraph; start = 0): TypeId {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
iterator allTypesIncludingInner(g: TypeGraph; start = 0): TypeId {....raises: [],
    tags: [], forbids: [].}
Source   Edit  
iterator params(tree: TypeGraph; n: TypeId): TypeId {....raises: [], tags: [],
    forbids: [].}
Source   Edit  
iterator sons(tree: TypeGraph; n: TypeId): TypeId {....raises: [], tags: [],
    forbids: [].}
Source   Edit  

Templates

template `[]`(t: TypeGraph; n: TypeId): TypeNode
Source   Edit  
template firstSon(n: TypeId): TypeId
Source   Edit  
template kind(n: TypeNode): NirTypeKind
Source   Edit