aboutsummaryrefslogtreecommitdiff
path: root/system/include
diff options
context:
space:
mode:
Diffstat (limited to 'system/include')
-rwxr-xr-xsystem/include/emscripten/bind.h7
-rwxr-xr-xsystem/include/emscripten/wire.h20
2 files changed, 26 insertions, 1 deletions
diff --git a/system/include/emscripten/bind.h b/system/include/emscripten/bind.h
index 73a8d4da..9b6e69c9 100755
--- a/system/include/emscripten/bind.h
+++ b/system/include/emscripten/bind.h
@@ -47,10 +47,15 @@ namespace emscripten {
TYPEID floatType,
const char* name);
- void _embind_register_cstring(
+ void _embind_register_std_string(
TYPEID stringType,
const char* name);
+ void _embind_register_std_wstring(
+ TYPEID stringType,
+ size_t charSize,
+ const char* name);
+
void _embind_register_emval(
TYPEID emvalType,
const char* name);
diff --git a/system/include/emscripten/wire.h b/system/include/emscripten/wire.h
index 64114491..0e8334e8 100755
--- a/system/include/emscripten/wire.h
+++ b/system/include/emscripten/wire.h
@@ -181,6 +181,26 @@ namespace emscripten {
}
};
+ template<>
+ struct BindingType<std::wstring> {
+ typedef struct {
+ size_t length;
+ wchar_t data[1]; // trailing data
+ }* WireType;
+ static WireType toWireType(const std::wstring& v) {
+ WireType wt = (WireType)malloc(sizeof(size_t) + v.length() * sizeof(wchar_t));
+ wt->length = v.length();
+ wmemcpy(wt->data, v.data(), v.length());
+ return wt;
+ }
+ static std::wstring fromWireType(WireType v) {
+ return std::wstring(v->data, v->length);
+ }
+ static void destroy(WireType v) {
+ free(v);
+ }
+ };
+
template<typename T>
struct BindingType<const T> : public BindingType<T> {
};