aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2014-04-29 15:29:48 -0700
committerAlon Zakai <alonzakai@gmail.com>2014-04-29 15:29:48 -0700
commitd3cf5d84ecfd5218b6f570860b0a92c7eb1be0eb (patch)
treebb26cbb538250aa6d65e9cedea447a9c731865f5
parentd5cf59ac87b14eee47e229fe0543c8faa27a2ff4 (diff)
parent6c1b114fa5078dcac3f6617a6f890f0106fcf090 (diff)
Merge pull request #2326 from polymeris/incoming
Bind std::basic_string<unsigned char> to js strings based on incoming
-rw-r--r--AUTHORS2
-rw-r--r--system/lib/embind/bind.cpp1
-rw-r--r--tests/embind/embind.test.js15
-rw-r--r--tests/embind/embind_test.cpp5
4 files changed, 22 insertions, 1 deletions
diff --git a/AUTHORS b/AUTHORS
index c162103a..7994f80e 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -137,4 +137,4 @@ a license to everyone to use it as detailed in LICENSE.)
* Ori Avtalion <ori@avtalion.name>
* Guillaume Blanc <guillaumeblanc.sc@gmail.com>
* Usagi Ito <usagi@WonderRabbitProject.net>
-
+* Camilo Polymeris <cpolymeris@gmail.com>
diff --git a/system/lib/embind/bind.cpp b/system/lib/embind/bind.cpp
index 37918050..16c24a91 100644
--- a/system/lib/embind/bind.cpp
+++ b/system/lib/embind/bind.cpp
@@ -78,6 +78,7 @@ EMSCRIPTEN_BINDINGS(native_and_builtin_types) {
register_float<double>("double");
_embind_register_std_string(TypeID<std::string>::get(), "std::string");
+ _embind_register_std_string(TypeID<std::basic_string<unsigned char> >::get(), "std::basic_string<unsigned char>");
_embind_register_std_wstring(TypeID<std::wstring>::get(), sizeof(wchar_t), "std::wstring");
_embind_register_emval(TypeID<val>::get(), "emscripten::val");
_embind_register_memory_view(TypeID<memory_view>::get(), "emscripten::memory_view");
diff --git a/tests/embind/embind.test.js b/tests/embind/embind.test.js
index 6bba4de0..3ded811a 100644
--- a/tests/embind/embind.test.js
+++ b/tests/embind/embind.test.js
@@ -442,6 +442,21 @@ module({
var e = cm.emval_test_take_and_return_std_string((new Int8Array([65, 66, 67, 68])).buffer);
assert.equal('ABCD', e);
});
+
+ test("can pass Uint8Array to std::basic_string<unsigned char>", function() {
+ var e = cm.emval_test_take_and_return_std_basic_string_unsigned_char(new Uint8Array([65, 66, 67, 68]));
+ assert.equal('ABCD', e);
+ });
+
+ test("can pass Int8Array to std::basic_string<unsigned char>", function() {
+ var e = cm.emval_test_take_and_return_std_basic_string_unsigned_char(new Int8Array([65, 66, 67, 68]));
+ assert.equal('ABCD', e);
+ });
+
+ test("can pass ArrayBuffer to std::basic_string<unsigned char>", function() {
+ var e = cm.emval_test_take_and_return_std_basic_string_unsigned_char((new Int8Array([65, 66, 67, 68])).buffer);
+ assert.equal('ABCD', e);
+ });
test("non-ascii wstrings", function() {
var expected = String.fromCharCode(10) +
diff --git a/tests/embind/embind_test.cpp b/tests/embind/embind_test.cpp
index 1b835751..5a83903a 100644
--- a/tests/embind/embind_test.cpp
+++ b/tests/embind/embind_test.cpp
@@ -109,6 +109,10 @@ std::string emval_test_take_and_return_std_string_const_ref(const std::string& s
return str;
}
+std::basic_string<unsigned char> emval_test_take_and_return_std_basic_string_unsigned_char(std::basic_string<unsigned char> str) {
+ return str;
+}
+
std::wstring take_and_return_std_wstring(std::wstring str) {
return str;
}
@@ -1446,6 +1450,7 @@ EMSCRIPTEN_BINDINGS(tests) {
//function("emval_test_take_and_return_const_char_star", &emval_test_take_and_return_const_char_star);
function("emval_test_take_and_return_std_string", &emval_test_take_and_return_std_string);
function("emval_test_take_and_return_std_string_const_ref", &emval_test_take_and_return_std_string_const_ref);
+ function("emval_test_take_and_return_std_basic_string_unsigned_char", &emval_test_take_and_return_std_basic_string_unsigned_char);
function("take_and_return_std_wstring", &take_and_return_std_wstring);
//function("emval_test_take_and_return_CustomStruct", &emval_test_take_and_return_CustomStruct);