%module x // Just the following languages tested #if defined (SWIGCSHARP) || defined (SWIGD) %typemap(out, optimal="1") SWIGTYPE %{ $result = new $1_ltype((const $1_ltype &)$1); %} #elif defined (SWIGJAVA) %typemap(out, optimal="1") SWIGTYPE %{ *($&1_ltype*)&$result = new $1_ltype((const $1_ltype &)$1); %} #elif defined (SWIGUTL) %typemap(out,noblock="1", optimal="1") SWIGTYPE { %set_output(SWIG_NewPointerObj(%new_copy($1, $ltype), $&descriptor, SWIG_POINTER_OWN | %newpointer_flags)); } #endif // This results in an action which SWIG should disable "optimal" for, but // it was failing to. Fixed in SWIG 4.1.0. %exception XX::create() "$action\n{while(sleep(1)){}}" %ignore XX::operator=; #ifdef SWIGD %rename(trace) XX::debug; #endif %inline %{ #include <iostream> using namespace std; struct XX { XX() { if (debug) cout << "XX()" << endl; } XX(int i) { if (debug) cout << "XX(" << i << ")" << endl; } XX(const XX &other) { if (debug) cout << "XX(const XX &)" << endl; } XX& operator =(const XX &other) { if (debug) cout << "operator=(const XX &)" << endl; return *this; } ~XX() { if (debug) cout << "~XX()" << endl; } static XX create() { return XX(123); } static bool debug; }; bool XX::debug = true; %}
Generated by dwww version 1.15 on Tue Jul 2 00:39:50 CEST 2024.