diff options
author | Araq <rumpf_a@web.de> | 2012-07-28 17:28:36 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2012-07-28 17:28:36 +0200 |
commit | 58a66a0d705e824b69ee7b355dbc8c304493afdd (patch) | |
tree | 5d793dac0fb56f485d307294ea4828dc4fbf8df4 | |
parent | b9afdffb3e36d7c54aed22cd7a3a669f2e13a97e (diff) | |
download | Nim-58a66a0d705e824b69ee7b355dbc8c304493afdd.tar.gz |
more reliable NI/NU definitions
-rwxr-xr-x | compiler/cgen.nim | 17 | ||||
-rwxr-xr-x | lib/nimbase.h | 18 |
2 files changed, 21 insertions, 14 deletions
diff --git a/compiler/cgen.nim b/compiler/cgen.nim index e4286f5de..8d027b11c 100755 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -800,20 +800,9 @@ proc genVarPrototype(m: BModule, sym: PSym) = if sfExportc in sym.flags and generatedHeader != nil: genVarPrototypeAux(generatedHeader, sym) -proc addIntTypes(result: var PRope) = - case platform.CPU[targetCPU].intSize - of 16: - appff(result, - "$ntypedef short int NI;$n" & "typedef unsigned short int NU;$n", - "$n%NI = type i16$n", []) - of 32: - appff(result, - "$ntypedef long int NI;$n" & "typedef unsigned long int NU;$n", - "$n%NI = type i32$n", []) - of 64: - appff(result, "$ntypedef long long int NI;$n" & - "typedef unsigned long long int NU;$n", "$n%NI = type i64$n", []) - else: nil +proc addIntTypes(result: var PRope) {.inline.} = + appf(result, "#define NIM_INTBITS $1", [ + platform.CPU[targetCPU].intSize.toRope]) proc getCopyright(cfilenoext: string): PRope = if optCompileOnly in gGlobalOptions: diff --git a/lib/nimbase.h b/lib/nimbase.h index 71f3b0d7c..c1dbc39d1 100755 --- a/lib/nimbase.h +++ b/lib/nimbase.h @@ -337,6 +337,24 @@ typedef long long int NI64; typedef unsigned int NU32; #endif +#ifdef NIM_INTBITS +# if NIM_INTBITS == 64 +typedef NI64 NI; +typedef NU64 NU; +# elif NIM_INTBITS == 32 +typedef NI32 NI; +typedef NU32 NU; +# elif NIM_INTBITS == 16 +typedef NI16 NI; +typedef NU16 NU; +# elif NIM_INTBITS == 8 +typedef NI8 NI; +typedef NU8 NU; +# else +# error "invalid bit width for int" +# endif +#endif + extern NI nim_program_result; typedef float NF32; |