123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #
- #
- # Nim's Runtime Library
- # (c) Copyright 2019 Nim contributors
- #
- # See the file "copying.txt", included in this
- # distribution, for details about the copyright.
- #
- ## Unstable API.
- when defined(hotcodereloading):
- import
- std/macros
- template beforeCodeReload*(body: untyped) =
- hcrAddEventHandler(true, proc = body) {.executeOnReload.}
- template afterCodeReload*(body: untyped) =
- hcrAddEventHandler(false, proc = body) {.executeOnReload.}
- macro hasModuleChanged*(module: typed): untyped =
- if module.kind != nnkSym or module.symKind != nskModule:
- error "hasModuleChanged expects a module symbol", module
- return newCall(bindSym"hcrHasModuleChanged", newLit(module.signatureHash))
- proc hasAnyModuleChanged*(): bool = hcrReloadNeeded()
- when not defined(js):
- template performCodeReload* =
- when isMainModule:
- {.warning: "Code residing in the main module will not be changed from calling a code-reload".}
- hcrPerformCodeReload()
- else:
- template performCodeReload* = discard
- else:
- template beforeCodeReload*(body: untyped) = discard
- template afterCodeReload*(body: untyped) = discard
- template hasModuleChanged*(module: typed): bool = false
- proc hasAnyModuleChanged*(): bool = false
- template performCodeReload*() = discard
|