| /* This interface file tests whether SWIG handles the Microsoft __int64 type through the use of |
| applying the long long typemaps. The generated code should not have any instances of long long. */ |
| |
| %module long_long_apply |
| |
| %{ |
| #ifdef _MSC_VER /* Visual C++ */ |
| typedef __int64 LongLong; |
| typedef unsigned __int64 UnsignedLongLong; |
| #else |
| typedef long long LongLong; |
| typedef unsigned long long UnsignedLongLong; |
| #endif |
| %} |
| |
| %apply long long { LongLong }; |
| %apply unsigned long long { UnsignedLongLong }; |
| |
| %apply const long long & { const LongLong & }; |
| %apply const unsigned long long & { const UnsignedLongLong & }; |
| |
| %inline %{ |
| // pass by value |
| LongLong value1(LongLong x) { return x; } |
| UnsignedLongLong value2(UnsignedLongLong x) { return x; } |
| |
| // pass by reference |
| const LongLong &ref1(const LongLong &x) { return x; } |
| const UnsignedLongLong &ref2(const UnsignedLongLong &x) { return x; } |
| |
| // global variables |
| LongLong global1; |
| UnsignedLongLong global2; |
| |
| // global reference variables |
| const LongLong& global_ref1 = global1; |
| const UnsignedLongLong& global_ref2 = global2; |
| %} |
| |
| |
| // typemaps library |
| %include "typemaps.i" |
| %apply long long *INPUT { LongLong *INPUT }; |
| %apply unsigned long long *INPUT { UnsignedLongLong *INPUT }; |
| |
| %apply long long *OUTPUT { LongLong *OUTPUT }; |
| %apply unsigned long long *OUTPUT { UnsignedLongLong *OUTPUT }; |
| |
| %apply long long *INOUT { LongLong *INOUT }; |
| %apply unsigned long long *INOUT { UnsignedLongLong *INOUT }; |
| |
| %apply long long &INPUT { LongLong &INPUT }; |
| %apply unsigned long long &INPUT { UnsignedLongLong &INPUT }; |
| |
| %apply long long &OUTPUT { LongLong &OUTPUT }; |
| %apply unsigned long long &OUTPUT { UnsignedLongLong &OUTPUT }; |
| |
| %apply long long &INOUT { LongLong &INOUT }; |
| %apply unsigned long long &INOUT { UnsignedLongLong &INOUT }; |
| |
| %inline %{ |
| LongLong in_longlong(LongLong *INPUT) { return *INPUT; } |
| UnsignedLongLong in_ulonglong(UnsignedLongLong *INPUT) { return *INPUT; } |
| LongLong inr_longlong(LongLong &INPUT) { return INPUT; } |
| UnsignedLongLong inr_ulonglong(UnsignedLongLong &INPUT) { return INPUT; } |
| |
| void out_longlong(LongLong x, LongLong *OUTPUT) { *OUTPUT = x; } |
| void out_ulonglong(UnsignedLongLong x, UnsignedLongLong *OUTPUT) { *OUTPUT = x; } |
| void outr_longlong(LongLong x, LongLong &OUTPUT) { OUTPUT = x; } |
| void outr_ulonglong(UnsignedLongLong x, UnsignedLongLong &OUTPUT) { OUTPUT = x; } |
| |
| void inout_longlong(LongLong *INOUT) { *INOUT = *INOUT; } |
| void inout_ulonglong(UnsignedLongLong *INOUT) { *INOUT = *INOUT; } |
| void inoutr_longlong(LongLong &INOUT) { INOUT = INOUT; } |
| void inoutr_ulonglong(UnsignedLongLong &INOUT) { INOUT = INOUT; } |
| %} |
| |