diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-04-18 10:53:49 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2016-04-18 10:53:49 +0200 |
commit | d7e8b89eb8f159e0220c48cd06233b7a6a060a72 (patch) | |
tree | 3b05979e92f003b3acb94052d9a3839cf255cfcc | |
parent | 7f7fc35a0edbe94056a5ad8c442c577f0a1ce7be (diff) | |
parent | 01ca3ba26d28c5f645b0fc30fca1f386970d120d (diff) | |
download | Nim-d7e8b89eb8f159e0220c48cd06233b7a6a060a72.tar.gz |
Merge pull request #4094 from mjendrusch/cppTemplates
Fixes #4093
-rw-r--r-- | compiler/ccgtypes.nim | 2 | ||||
-rw-r--r-- | lib/nimbase.h | 2 | ||||
-rw-r--r-- | tests/cpp/ttemplatetype.nim | 9 |
3 files changed, 12 insertions, 1 deletions
diff --git a/compiler/ccgtypes.nim b/compiler/ccgtypes.nim index 39f16ff0d..ab40fff73 100644 --- a/compiler/ccgtypes.nim +++ b/compiler/ccgtypes.nim @@ -654,7 +654,7 @@ proc getTypeDescAux(m: BModule, typ: PType, check: var IntSet): Rope = else: result = cppName & "<" for i in 1 .. typ.len-2: - if i > 1: result.add(", ") + if i > 1: result.add(" COMMA ") result.add(getTypeDescAux(m, typ.sons[i], check)) result.add("> ") # always call for sideeffects: diff --git a/lib/nimbase.h b/lib/nimbase.h index 5a4f403b6..f531f3c49 100644 --- a/lib/nimbase.h +++ b/lib/nimbase.h @@ -222,6 +222,8 @@ __clang__ /* ----------------------------------------------------------------------- */ +#define COMMA , + #include <limits.h> #include <stddef.h> diff --git a/tests/cpp/ttemplatetype.nim b/tests/cpp/ttemplatetype.nim new file mode 100644 index 000000000..7f56a225d --- /dev/null +++ b/tests/cpp/ttemplatetype.nim @@ -0,0 +1,9 @@ +type + Map {.importcpp: "std::map", header: "<map>".} [T,U] = object + +proc cInitMap(T: typedesc, U: typedesc): Map[T,U] {.importcpp: "std::map<'*1,'*2>()", nodecl.} + +proc initMap[T, U](): Map[T, U] = + result = cInitMap(T, U) + +var x: Map[cstring, cint] = initMap[cstring, cint]() |