Ah, I see -- the JS object that's created isn't actually a pointer in this
case, it's a wrapper object (that contains a pointer). Digging into the
wrapper object to find the pointer is probably gauche...

Easiest way may be to define a virtual factory class in C++, which has a
method that is bound to return your instance type; then you can pass the
derived JS factory instance into your C++ side and simply call that
function instead of the constructor directly.

-- brion

On Wed, Dec 9, 2015 at 12:56 PM, Joshua Auerbach <[email protected]>
wrote:

> Are you sure it's so simple?
>
> Calling this from C++ does not work properly:
>
> TestStruct* testPtr = reinterpret_cast<TestStruct*>(
> emscripten_run_script_int("new Module.TestStruct(2.2);") );
>
> while I can create TestStructs with the same constructor fine from within
> JavaScript (and emscripten_run_script_int works if I am actually returning
> an int)
>
> note:
>
> struct TestStruct {
>     double a;
>     TestStruct(double x) : a(x) {}
> };
>
> EMSCRIPTEN_BINDINGS(my_module) {
> emscripten::class_<TestStruct>("TestStruct")
>         .constructor<float>()
>         .property("a", &TestStruct::a);
> }
>
>
> Thanks,
> Josh
>
>
> On 12/09/2015 06:54 PM, Brion Vibber wrote:
>
> Simply return the pointer from the function with the 'return' statement,
> like any other function return value. Remember that pointers are just
> integers.
>
> -- brion
> On Dec 9, 2015 6:13 AM, "Josh A" < <[email protected]>
> [email protected]> wrote:
>
>> Hi all,
>>
>> This seems like it should be really straight forward, but I can't find an
>> example of this.
>>
>> I am trying to expose some scripting on my software:
>>
>> With embind I expose an Interface that should be implemented by
>> javascript.  This works fine.
>>
>> Now I want to call some code that takes a provided js implementation of
>> the interface, instatiates it and returns a pointer to C++ of the created
>> object.  I can do the js call fine and everything works, but I can't seem
>> to find how to get the pointer from the js back to the C++, either using an
>> emscripten_run_script variant or using embind vars or some other method.
>>
>> I have tried searching, reading through docs and looking at the test
>> code, but still can't find an example of this.  Can someone please point me
>> to the right place?
>>
>> Thanks++
>> Josh
>> --
>> You received this message because you are subscribed to the Google Groups
>> "emscripten-discuss" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
> --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>
>
>
> --
> Dr. Joshua E. Auerbach
> Postdoctoral Researcher
> Laboratory of Intelligent Systems
> École Polytechnique Fédérale de Lausanne
>
> --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to