Hi Chad,

Thank you for your prompt reply. : D

The second argument(char * data)'s content will be changed directly after 
the method(encryptData/decryptData) called.

So second "data" argument is not only INPUT but also OUTPUT.(the others 
[encryptType, Len] are INPUT only)

In your relay, you give me a great idea to deal with char point by wrapping 
it.

And I write a test case for testing the idea.
------------------------------------------------------------
  #include <emscripten/bind.h>
  #include <iostream>
  using namespace emscripten;
  
  void test(char *s) {
      s[0]=0x64;  // change to lower case 'd'
  }
  
  bool charWrap(std::string &s) {
      test(&s[0]);   
      return true;
  }
  
  int main () {
      std::string data = "Data";
      std::cout << data << "-"<< data.length()<<"\n";
      charWrap(data);
      std::cout << data << "-"<< data.length()<<"\n";
      return 0;
  }
------------------------------------------------
I  run this in nodeJS and It works by wrapping it.
*Execute result:*
Data-4
data-4

But when I use embind to export charWrap function,I get error.
EMSCRIPTEN_BINDINGS(test) {
      function("charWrap",&charWrap);
}
---------------------------------------------
emscripten/system/include/emscripten/bind.h:271:25: error: non-const lvalue 
reference to type
      'basic_string<[3 * ...]>' cannot bind to a temporary of type 
'basic_string<[3 * ...]>'
                        internal::BindingType<Args>::fromWireType(args)...
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
emscripten/system/include/emscripten/bind.h:306:78: note: in instantiation 
of member function
      'emscripten::internal::Invoker<bool, std::__1::basic_string<char, 
std::__1::char_traits<char>,
      std::__1::allocator<char> > &>::invoke' requested here
            reinterpret_cast<GenericFunction>(&Invoker<ReturnType, 
Args...>::invoke),
                                                                             
^
cc.cpp:23:2: note: in instantiation of function template specialization 
'emscripten::function<bool,
      std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > &, >' requested
      here
        function("charWrap",&charWrap);
        ^
1 error generated.
ERROR    root: compiler frontend failed to generate LLVM bitcode, halting
-------------------------------------
Any comments?

Thanks a lot again. 

-- 
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