improve the compiler option "cppCompileToNamespace", a custom namespace can now be set

This commit is contained in:
Giovanni 2018-09-15 20:06:26 +09:00
commit f1b64e4b96
5 changed files with 22 additions and 10 deletions

View file

@ -679,8 +679,10 @@ proc generateHeaders(m: BModule) =
add(m.s[cfsHeaders], "#undef powerpc\L")
add(m.s[cfsHeaders], "#undef unix\L")
proc openNamespaceNim(): Rope =
result.add("namespace Nim {\L")
proc openNamespaceNim(namespace: string): Rope =
result.add("namespace ")
result.add(namespace)
result.add(" {\L")
proc closeNamespaceNim(): Rope =
result.add("}\L")
@ -1036,7 +1038,10 @@ proc addIntTypes(result: var Rope; conf: ConfigRef) {.inline.} =
addf(result, "#define NIM_NEW_MANGLING_RULES\L" &
"#define NIM_INTBITS $1\L", [
platform.CPU[conf.target.targetCPU].intSize.rope])
if optUseNimNamespace in conf.globalOptions: result.add("#define USE_NIM_NAMESPACE\L")
if optUseNimNamespace in conf.globalOptions:
result.add("#define USE_NIM_NAMESPACE ")
result.add(conf.cppCustomNamespace)
result.add("\L")
proc getCopyright(conf: ConfigRef; cfile: Cfile): Rope =
if optCompileOnly in conf.globalOptions:
@ -1210,10 +1215,10 @@ proc genMainProc(m: BModule) =
[m.g.mainModInit, initStackBottomCall, rope(m.labels)])
if optNoMain notin m.config.globalOptions:
if optUseNimNamespace in m.config.globalOptions:
m.s[cfsProcs].add closeNamespaceNim() & "using namespace Nim;\L"
m.s[cfsProcs].add closeNamespaceNim() & "using namespace " & m.config.cppCustomNamespace & ";\L"
appcg(m, m.s[cfsProcs], otherMain, [])
if optUseNimNamespace in m.config.globalOptions: m.s[cfsProcs].add openNamespaceNim()
if optUseNimNamespace in m.config.globalOptions: m.s[cfsProcs].add openNamespaceNim(m.config.cppCustomNamespace)
proc getSomeInitName(m: PSym, suffix: string): Rope =
assert m.kind == skModule
@ -1336,7 +1341,7 @@ proc genModule(m: BModule, cfile: Cfile): Rope =
add(result, m.s[i])
add(result, genSectionEnd(i, m.config))
if optUseNimNamespace in m.config.globalOptions and i == cfsHeaders:
result.add openNamespaceNim()
result.add openNamespaceNim(m.config.cppCustomNamespace)
add(result, m.s[cfsInitProc])
if optUseNimNamespace in m.config.globalOptions: result.add closeNamespaceNim()
@ -1469,7 +1474,7 @@ proc writeHeader(m: BModule) =
add(result, genSectionStart(i, m.config))
add(result, m.s[i])
add(result, genSectionEnd(i, m.config))
if optUseNimNamespace in m.config.globalOptions and i == cfsHeaders: result.add openNamespaceNim()
if optUseNimNamespace in m.config.globalOptions and i == cfsHeaders: result.add openNamespaceNim(m.config.cppCustomNamespace)
add(result, m.s[cfsInitProc])
if optGenDynLib in m.config.globalOptions: