Source   Edit

This module contains the data structures for the C code generation phase.


BModule = ref TCGen
  Source   Edit
BModuleList = ref object of RootObj
  mainModProcs*, mainModInit*, otherModsInit*, mainDatInit*: Rope
  mapping*: Rope
  modules*: seq[BModule]
  modulesClosed*: seq[BModule]
  forwardedProcs*: seq[PSym]
  generatedHeader*: BModule
  typeInfoMarker*: TypeCacheWithOwner
  typeInfoMarkerV2*: TypeCacheWithOwner
  config*: ConfigRef
  graph*: ModuleGraph
  strVersion*, seqVersion*: int
  nimtv*: Rope
  nimtvDeps*: seq[PType]
  nimtvDeclared*: IntSet
  Source   Edit
BProc = ref TCProc
  Source   Edit
CodegenFlag = enum
  preventStackTrace, usesThreadVars, frameDeclared, isHeaderFile,
  includesStringh, objHasKidsValid, useAliveDataFromDce
  Source   Edit
TBlock = object
  id*: int
  label*: Rope
  sections*: TCProcSections
  isLoop*: bool
  nestedTryStmts*: int16
  nestedExceptStmts*: int16
  frameLen*: int16
  Source   Edit
TCFileSection = enum
  cfsMergeInfo, cfsHeaders, cfsFrameDefines, cfsForwardTypes, cfsTypes,
  cfsSeqTypes, cfsFieldInfo, cfsTypeInfo, cfsProcHeaders, cfsData, cfsVars,
  cfsProcs, cfsInitProc, cfsDatInitProc, cfsTypeInit1, cfsTypeInit2,
  cfsTypeInit3, cfsDebugInit, cfsDynLibInit, cfsDynLibDeinit
  Source   Edit
TCFileSections = array[TCFileSection, Rope]
  Source   Edit
TCProcFlag = enum
  beforeRetNeeded, threadVarAccessed, hasCurFramePointer, noSafePoints,
  nimErrorFlagAccessed, nimErrorFlagDeclared, nimErrorFlagDisabled
  Source   Edit
TCProcSection = enum
  cpsLocals, cpsInit, cpsStmts
  Source   Edit
TCProcSections = array[TCProcSection, Rope]
  Source   Edit
TCTypeKind = enum
  ctVoid, ctChar, ctBool, ctInt, ctInt8, ctInt16, ctInt32, ctInt64, ctFloat,
  ctFloat32, ctFloat64, ctFloat128, ctUInt, ctUInt8, ctUInt16, ctUInt32,
  ctUInt64, ctArray, ctPtrToArray, ctStruct, ctPtr, ctNimStr, ctNimSeq, ctProc,
  Source   Edit
TLabel = Rope
  Source   Edit
TTypeSeq = seq[PType]
  Source   Edit
TypeCache = Table[SigHash, Rope]
  Source   Edit
TypeCacheWithOwner = Table[SigHash, tuple[str: Rope, owner: int32]]
  Source   Edit


proc includeHeader(this: BModule; header: string) {....raises: [], tags: [].}
  Source   Edit
proc newModuleList(g: ModuleGraph): BModuleList {....raises: [], tags: [].}
  Source   Edit
proc newProc(prc: PSym; module: BModule): BProc {....raises: [], tags: [].}
  Source   Edit
proc procSec(p: BProc; s: TCProcSection): var Rope {.inline, ...raises: [],
    tags: [].}
  Source   Edit
proc s(p: BProc; s: TCProcSection): var Rope {.inline, ...raises: [], tags: [].}
  Source   Edit


iterator cgenModules(g: BModuleList): BModule {....raises: [], tags: [].}
  Source   Edit


template config(m: BModule): ConfigRef
  Source   Edit
template config(p: BProc): ConfigRef
  Source   Edit