diff options
author | Alon Zakai <alonzakai@gmail.com> | 2014-06-18 16:58:39 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2014-06-18 16:58:39 -0700 |
commit | 00e891dc31bb23d77cceeeec52be7dd64176bbab (patch) | |
tree | 17bfc2400076d2e2fcd669a18de1ecaed0aa299b /tests/embind/embind_test.cpp | |
parent | d54f3a7b86e2b266cc86341b6e06096dc7f04d5e (diff) | |
parent | 22d2a0fcd2729d9c0c8d53e59471432ddf206b6a (diff) |
Merge pull request #2432 from dlardi/incoming
Added embind support for std::unique_ptr
Diffstat (limited to 'tests/embind/embind_test.cpp')
-rw-r--r-- | tests/embind/embind_test.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/embind/embind_test.cpp b/tests/embind/embind_test.cpp index 30267994..511f179b 100644 --- a/tests/embind/embind_test.cpp +++ b/tests/embind/embind_test.cpp @@ -856,6 +856,32 @@ void emval_test_call_function(val v, int i, float f, TupleVector tv, StructVecto v(i, f, tv, sv); } +class UniquePtrToConstructor { +public: + UniquePtrToConstructor(std::unique_ptr<int> p) + : value(*p) + {} + + int getValue() const { + return value; + } + +private: + int value; +}; + +std::unique_ptr<int> embind_test_return_unique_ptr(int v) { + return std::unique_ptr<int>(new int(v)); +} + +UniquePtrToConstructor* embind_test_construct_class_with_unique_ptr(int v) { + return new UniquePtrToConstructor(embind_test_return_unique_ptr(v)); +} + +int embind_test_accept_unique_ptr(std::unique_ptr<int> p) { + return *p.get(); +} + std::unique_ptr<ValHolder> emval_test_return_unique_ptr() { return std::unique_ptr<ValHolder>(new ValHolder(val::object())); } @@ -1818,6 +1844,15 @@ EMSCRIPTEN_BINDINGS(tests) { function("embind_test_accept_small_class_instance", &embind_test_accept_small_class_instance); function("embind_test_accept_big_class_instance", &embind_test_accept_big_class_instance); + class_<UniquePtrToConstructor>("UniquePtrToConstructor") + .constructor<std::unique_ptr<int>>() + .function("getValue", &UniquePtrToConstructor::getValue) + ; + + function("embind_test_construct_class_with_unique_ptr", embind_test_construct_class_with_unique_ptr, allow_raw_pointer<ret_val>()); + function("embind_test_return_unique_ptr", embind_test_return_unique_ptr); + function("embind_test_accept_unique_ptr", embind_test_accept_unique_ptr); + function("embind_test_return_raw_base_ptr", embind_test_return_raw_base_ptr, allow_raw_pointer<ret_val>()); function("embind_test_return_raw_derived_ptr_as_base", embind_test_return_raw_derived_ptr_as_base, allow_raw_pointer<ret_val>()); function("embind_test_return_raw_sibling_derived_ptr_as_base", embind_test_return_raw_sibling_derived_ptr_as_base, allow_raw_pointer<ret_val>()); |