diff options
Diffstat (limited to 'tests/embind/embind_test.cpp')
-rw-r--r-- | tests/embind/embind_test.cpp | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/tests/embind/embind_test.cpp b/tests/embind/embind_test.cpp index 21fbee65..23761efc 100644 --- a/tests/embind/embind_test.cpp +++ b/tests/embind/embind_test.cpp @@ -1083,6 +1083,8 @@ public: virtual std::string optionalMethod(std::string s) const { return "optional" + s; } + + virtual void differentArguments(int i, double d, unsigned char f, double q, std::string) = 0; }; EMSCRIPTEN_SYMBOL(optionalMethod); @@ -1094,17 +1096,26 @@ public: std::string abstractMethod() const { return call<std::string>("abstractMethod"); } + std::string optionalMethod(std::string s) const { return optional_call<std::string>(optionalMethod_symbol, [&] { return AbstractClass::optionalMethod(s); }, s); } + + void differentArguments(int i, double d, unsigned char f, double q, std::string s) { + return call<void>("differentArguments", i, d, f, q, s); + } }; class ConcreteClass : public AbstractClass { std::string abstractMethod() const { return "from concrete"; } + + + void differentArguments(int i, double d, unsigned char f, double q, std::string s) { + } }; std::shared_ptr<AbstractClass> getAbstractClass() { @@ -1119,6 +1130,24 @@ std::string callOptionalMethod(AbstractClass& ac, std::string s) { return ac.optionalMethod(s); } +void callDifferentArguments(AbstractClass& ac, int i, double d, unsigned char f, double q, std::string s) { + return ac.differentArguments(i, d, f, q, s); +} + +EMSCRIPTEN_BINDINGS(interface_tests) { + class_<AbstractClass>("AbstractClass") + .smart_ptr<std::shared_ptr<AbstractClass>>() + .allow_subclass<AbstractClassWrapper>() + .function("abstractMethod", &AbstractClass::abstractMethod) + .function("optionalMethod", &AbstractClass::optionalMethod) + ; + + function("getAbstractClass", &getAbstractClass); + function("callAbstractMethod", &callAbstractMethod); + function("callOptionalMethod", &callOptionalMethod); + function("callDifferentArguments", &callDifferentArguments); +} + class HasExternalConstructor { public: HasExternalConstructor(const std::string& str) @@ -1750,17 +1779,6 @@ EMSCRIPTEN_BINDINGS(tests) { function("embind_test_new_Object", &embind_test_new_Object); function("embind_test_new_factory", &embind_test_new_factory); - class_<AbstractClass>("AbstractClass") - .smart_ptr<std::shared_ptr<AbstractClass>>() - .allow_subclass<AbstractClassWrapper>() - .function("abstractMethod", &AbstractClass::abstractMethod) - .function("optionalMethod", &AbstractClass::optionalMethod) - ; - - function("getAbstractClass", &getAbstractClass); - function("callAbstractMethod", &callAbstractMethod); - function("callOptionalMethod", &callOptionalMethod); - class_<HasExternalConstructor>("HasExternalConstructor") .constructor(&createHasExternalConstructor) .function("getString", &HasExternalConstructor::getString) |