diff options
Diffstat (limited to 'tests/cpp/temitlist.nim')
-rw-r--r-- | tests/cpp/temitlist.nim | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/cpp/temitlist.nim b/tests/cpp/temitlist.nim new file mode 100644 index 000000000..9170be079 --- /dev/null +++ b/tests/cpp/temitlist.nim @@ -0,0 +1,38 @@ +discard """ + targets: "cpp" + output: ''' +6.0 +0''' +disabled: "windows" # pending bug #18011 +""" + +# bug #4730 + +type Vector*[T] {.importcpp: "std::vector", header: "<vector>".} = object + +template `[]=`*[T](v: var Vector[T], key: int, val: T) = + {.emit: [v, "[", key, "] = ", val, ";"].} + +proc setLen*[T](v: var Vector[T]; size: int) {.importcpp: "resize", nodecl.} +proc `[]`*[T](v: var Vector[T], key: int): T {.importcpp: "(#[#])", nodecl.} + +proc main = + var v: Vector[float] + v.setLen 1 + v[0] = 6.0 + echo v[0] + +main() + +#------------ + +#bug #6837 +type StdString {.importCpp: "std::string", header: "<string>", byref.} = object +proc initString(): StdString {.constructor, importCpp: "std::string(@)", header: "<string>".} +proc size(this: var StdString): csize_t {.importCpp: "size", header: "<string>".} + +proc f(): csize_t = + var myString: StdString = initString() + return myString.size() + +echo f() |