%module(directors="1") java_director_typemaps // Test director pointer typemaps in typemaps.i - similar to java_director_typemaps.i testcase %feature("director", assumeoverride=1) Quux; %include %apply bool* OUTPUT {bool*}; %apply signed char* OUTPUT {signed char*}; %apply unsigned char* OUTPUT {unsigned char*}; %apply short* OUTPUT {short*}; %apply unsigned short* OUTPUT {unsigned short*}; %apply int* OUTPUT {int*}; %apply unsigned int* OUTPUT {unsigned int*}; %apply long* OUTPUT {long*}; %apply unsigned long* OUTPUT {unsigned long*}; %apply long long* OUTPUT {long long*}; // %apply unsigned long long* OUTPUT {unsigned long long*}; %apply float* OUTPUT {float*}; %apply double* OUTPUT {double*}; %apply bool* OUTPUT {bool* boolarg_output}; %apply signed char* OUTPUT {signed char* signed_chararg_output}; %apply unsigned char* OUTPUT {unsigned char* unsigned_chararg_output}; %apply short* OUTPUT {short* shortarg_output}; %apply unsigned short* OUTPUT {unsigned short* unsigned_shortarg_output}; %apply int* OUTPUT {int* intarg_output}; %apply unsigned int* OUTPUT {unsigned int* unsigned_intarg_output}; %apply long* OUTPUT {long* longarg_output}; %apply unsigned long* OUTPUT {unsigned long* unsigned_longarg_output}; %apply long long* OUTPUT {long long* long_longarg_output}; // %apply unsigned long long* OUTPUT {unsigned long long* unsigned_long_longarg_output}; %apply float* OUTPUT {float* floatarg_output}; %apply double* OUTPUT {double* doublearg_output}; %apply bool* INOUT {bool* boolarg_inout}; %apply signed char* INOUT {signed char* signed_chararg_inout}; %apply unsigned char* INOUT {unsigned char* unsigned_chararg_inout}; %apply short* INOUT {short* shortarg_inout}; %apply unsigned short* INOUT {unsigned short* unsigned_shortarg_inout}; %apply int* INOUT {int* intarg_inout}; %apply unsigned int* INOUT {unsigned int* unsigned_intarg_inout}; %apply long* INOUT {long* longarg_inout}; %apply unsigned long* INOUT {unsigned long* unsigned_longarg_inout}; %apply long long* INOUT {long long* long_longarg_inout}; // %apply unsigned long long* INOUT {unsigned long long* unsigned_long_longarg_inout}; %apply float* INOUT {float* floatarg_inout}; %apply double* INOUT {double* doublearg_inout}; %{ #include #define verify(ok) if (!(ok)) throw std::runtime_error(# ok); %} %inline %{ class Quux { public: Quux() {} virtual ~Quux() {} virtual void director_method_output( bool* boolarg_output, signed char* signed_chararg_output, unsigned char* unsigned_chararg_output, short* shortarg_output, unsigned short* unsigned_shortarg_output, int* intarg_output, unsigned int* unsigned_intarg_output, long* longarg_output, unsigned long* unsigned_longarg_output, long long* long_longarg_output, // unsigned long long* unsigned_long_longarg_output, float* floatarg_output, double* doublearg_output) { if (boolarg_output) *boolarg_output = false; if (signed_chararg_output) *signed_chararg_output = 50; if (unsigned_chararg_output) *unsigned_chararg_output = 50; if (shortarg_output) *shortarg_output = 50; if (unsigned_shortarg_output) *unsigned_shortarg_output = 50; if (intarg_output) *intarg_output = 50; if (unsigned_intarg_output) *unsigned_intarg_output = 50; if (longarg_output) *longarg_output = 50; if (unsigned_longarg_output) *unsigned_longarg_output = 50; if (long_longarg_output) *long_longarg_output = 50; // if (unsigned_long_longarg_output) *unsigned_long_longarg_output = 50; if (floatarg_output) *floatarg_output = 50; if (doublearg_output) *doublearg_output = 50; } virtual void director_method_inout( bool* boolarg_inout, signed char* signed_chararg_inout, unsigned char* unsigned_chararg_inout, short* shortarg_inout, unsigned short* unsigned_shortarg_inout, int* intarg_inout, unsigned int* unsigned_intarg_inout, long* longarg_inout, unsigned long* unsigned_longarg_inout, long long* long_longarg_inout, // unsigned long long* unsigned_long_longarg_inout, float* floatarg_inout, double* doublearg_inout) { if (boolarg_inout) *boolarg_inout = false; if (signed_chararg_inout) *signed_chararg_inout = 50; if (unsigned_chararg_inout) *unsigned_chararg_inout = 50; if (shortarg_inout) *shortarg_inout = 50; if (unsigned_shortarg_inout) *unsigned_shortarg_inout = 50; if (intarg_inout) *intarg_inout = 50; if (unsigned_intarg_inout) *unsigned_intarg_inout = 50; if (longarg_inout) *longarg_inout = 50; if (unsigned_longarg_inout) *unsigned_longarg_inout = 50; if (long_longarg_inout) *long_longarg_inout = 50; // if (unsigned_long_longarg_inout) *unsigned_long_longarg_inout = 50; if (floatarg_inout) *floatarg_inout = 50; if (doublearg_inout) *doublearg_inout = 50; } virtual void director_method_nameless_args( bool* , signed char* , unsigned char* , short* , unsigned short* , int* , unsigned int* , long* , unsigned long* , long long* , // unsigned long long* , float* , double*) { } void etest() { bool boolarg_inout = false; signed char signed_chararg_inout = 111; unsigned char unsigned_chararg_inout = 150; short shortarg_inout = 150; unsigned short unsigned_shortarg_inout = 150; int intarg_inout = 150; unsigned int unsigned_intarg_inout = 150; long longarg_inout = 150; unsigned long unsigned_longarg_inout = 150; long long long_longarg_inout = 150; // unsigned long long unsigned_long_longarg_inout = 150; float floatarg_inout = 150; double doublearg_inout = 150; director_method_output( &boolarg_inout, &signed_chararg_inout, &unsigned_chararg_inout, &shortarg_inout, &unsigned_shortarg_inout, &intarg_inout, &unsigned_intarg_inout, &longarg_inout, &unsigned_longarg_inout, &long_longarg_inout, // &unsigned_long_longarg_inout, &floatarg_inout, &doublearg_inout); verify(boolarg_inout == true); verify(signed_chararg_inout == 1); verify(unsigned_chararg_inout == 2); verify(shortarg_inout == 3); verify(unsigned_shortarg_inout == 4); verify(intarg_inout == 5); verify(unsigned_intarg_inout == 6); verify(longarg_inout == 7); verify(unsigned_longarg_inout == 8); verify(long_longarg_inout == 9); // verify(unsigned_long_longarg_inout == 10); verify(floatarg_inout == 11); verify(doublearg_inout == 12); boolarg_inout = false; signed_chararg_inout = 101; unsigned_chararg_inout = 101; shortarg_inout = 101; unsigned_shortarg_inout = 101; intarg_inout = 101; unsigned_intarg_inout = 101; longarg_inout = 101; unsigned_longarg_inout = 101; long_longarg_inout = 101; // unsigned_long_longarg_inout = 101; floatarg_inout = 101; doublearg_inout = 101; director_method_inout( &boolarg_inout, &signed_chararg_inout, &unsigned_chararg_inout, &shortarg_inout, &unsigned_shortarg_inout, &intarg_inout, &unsigned_intarg_inout, &longarg_inout, &unsigned_longarg_inout, &long_longarg_inout, // &unsigned_long_longarg_inout, &floatarg_inout, &doublearg_inout); verify(boolarg_inout == false); verify(signed_chararg_inout == 11); verify(unsigned_chararg_inout == 12); verify(shortarg_inout == 13); verify(unsigned_shortarg_inout == 14); verify(intarg_inout == 15); verify(unsigned_intarg_inout == 16); verify(longarg_inout == 17); verify(unsigned_longarg_inout == 18); verify(long_longarg_inout == 19); // verify(unsigned_long_longarg_inout == 110); verify(floatarg_inout == 111); verify(doublearg_inout == 112); director_method_nameless_args( &boolarg_inout, &signed_chararg_inout, &unsigned_chararg_inout, &shortarg_inout, &unsigned_shortarg_inout, &intarg_inout, &unsigned_intarg_inout, &longarg_inout, &unsigned_longarg_inout, &long_longarg_inout, // &unsigned_long_longarg_inout, &floatarg_inout, &doublearg_inout); verify(boolarg_inout == true); verify(signed_chararg_inout == 12); verify(unsigned_chararg_inout == 13); verify(shortarg_inout == 14); verify(unsigned_shortarg_inout == 15); verify(intarg_inout == 16); verify(unsigned_intarg_inout == 17); verify(longarg_inout == 18); verify(unsigned_longarg_inout == 19); verify(long_longarg_inout == 20); // verify(unsigned_long_longarg_inout == 111); verify(floatarg_inout == 112); verify(doublearg_inout == 113); } void nulltest() { director_method_output( NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, // NULL, NULL, NULL); director_method_inout( NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, // NULL, NULL, NULL); director_method_nameless_args( NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, // NULL, NULL, NULL); } }; %} %clear bool*; %clear signed char*; %clear unsigned char*; %clear short*; %clear unsigned short*; %clear int*; %clear unsigned int*; %clear long*; %clear unsigned long*; %clear long long*; // %clear unsigned long long*; %clear float*; %clear double*;