diff options
author | Araq <rumpf_a@web.de> | 2013-06-30 21:15:28 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2013-06-30 21:15:28 +0200 |
commit | 52851b722d072f1306d699cc245af033cf76519a (patch) | |
tree | 57e0c5e84b6af19ca1c7853be566f3831eedb756 /lib/system/embedded.nim | |
parent | 651103ff320ef6f2a132be0a102749cefce725c9 (diff) | |
download | Nim-52851b722d072f1306d699cc245af033cf76519a.tar.gz |
--os:standalone works again
Diffstat (limited to 'lib/system/embedded.nim')
-rw-r--r-- | lib/system/embedded.nim | 71 |
1 files changed, 4 insertions, 67 deletions
diff --git a/lib/system/embedded.nim b/lib/system/embedded.nim index aaa3befaa..fad9722c2 100644 --- a/lib/system/embedded.nim +++ b/lib/system/embedded.nim @@ -10,8 +10,6 @@ # Bare-bones implementation of some things for embedded targets. -proc writeToStdErr(msg: CString) = write(stdout, msg) - proc chckIndx(i, a, b: int): int {.inline, compilerproc.} proc chckRange(i, a, b: int): int {.inline, compilerproc.} proc chckRangeF(x, a, b: float): float {.inline, compilerproc.} @@ -35,72 +33,11 @@ proc quitOrDebug() {.inline.} = quit(1) proc raiseException(e: ref E_Base, ename: CString) {.compilerRtl.} = - writeToStdErr(ename) - + sysFatal(ENoExceptionToReraise, "exception handling is not available") + proc reraiseException() {.compilerRtl.} = - writeToStdErr("reraise not supported") + sysFatal(ENoExceptionToReraise, "no exception to reraise") proc WriteStackTrace() = nil -proc setControlCHook(hook: proc () {.noconv.}) = - # ugly cast, but should work on all architectures: - type TSignalHandler = proc (sig: cint) {.noconv.} - c_signal(SIGINT, cast[TSignalHandler](hook)) - -proc raiseRangeError(val: biggestInt) {.compilerproc, noreturn, noinline.} = - writeToStdErr("value out of range") - -proc raiseIndexError() {.compilerproc, noreturn, noinline.} = - writeToStdErr("index out of bounds") - -proc raiseFieldError(f: string) {.compilerproc, noreturn, noinline.} = - writeToStdErr("field is not accessible") - -proc chckIndx(i, a, b: int): int = - if i >= a and i <= b: - return i - else: - raiseIndexError() - -proc chckRange(i, a, b: int): int = - if i >= a and i <= b: - return i - else: - raiseRangeError(i) - -proc chckRange64(i, a, b: int64): int64 {.compilerproc.} = - if i >= a and i <= b: - return i - else: - raiseRangeError(i) - -proc chckRangeF(x, a, b: float): float = - if x >= a and x <= b: - return x - else: - raise newException(EOutOfRange, "value " & $x & " out of range") - -proc chckNil(p: pointer) = - if p == nil: c_raise(SIGSEGV) - -proc chckObj(obj, subclass: PNimType) {.compilerproc.} = - # checks if obj is of type subclass: - var x = obj - if x == subclass: return # optimized fast path - while x != subclass: - if x == nil: - raise newException(EInvalidObjectConversion, "invalid object conversion") - x = x.base - -proc chckObjAsgn(a, b: PNimType) {.compilerproc, inline.} = - if a != b: - raise newException(EInvalidObjectAssignment, "invalid object assignment") - -proc isObj(obj, subclass: PNimType): bool {.compilerproc.} = - # checks if obj is of type subclass: - var x = obj - if x == subclass: return true # optimized fast path - while x != subclass: - if x == nil: return false - x = x.base - return true +proc setControlCHook(hook: proc () {.noconv.}) = nil |