dwww Home | Show directory contents | Find package

%module li_typemaps_apply

// Test %apply to global primitive type references/pointers to make sure the return types are still okay... mainly for the strongly typed languages.

%include "typemaps.i"

#if !defined(SWIGJAVA) // Needs asymmetric type marshalling support for this testcase to work

%define TMAPS(PRIMTYPE, NAME)
%apply PRIMTYPE *INPUT { PRIMTYPE * }
%apply PRIMTYPE &INPUT { PRIMTYPE & }
%inline %{
PRIMTYPE *input_ptr_##NAME(PRIMTYPE *v) { static PRIMTYPE stat; stat = *v; return &stat; }
PRIMTYPE &input_ref_##NAME(PRIMTYPE &v) { static PRIMTYPE stat; stat = v; return stat; }
%}

%apply PRIMTYPE *OUTPUT { PRIMTYPE * }
%apply PRIMTYPE &OUTPUT { PRIMTYPE & }
%inline %{
PRIMTYPE *output_ptr_##NAME(PRIMTYPE x, PRIMTYPE *v) { static PRIMTYPE stat; stat = x; *v = x; return &stat; }
PRIMTYPE &output_ref_##NAME(PRIMTYPE x, PRIMTYPE &v) { static PRIMTYPE stat; stat = x; v = x; return stat; }
%}

%apply PRIMTYPE *INOUT { PRIMTYPE * }
%apply PRIMTYPE &INOUT { PRIMTYPE & }
%inline %{
PRIMTYPE *inout_ptr_##NAME(PRIMTYPE *v) { static PRIMTYPE stat; stat = *v; *v = *v; return &stat; }
PRIMTYPE &inout_ref_##NAME(PRIMTYPE &v) { static PRIMTYPE stat; stat = v; v = v; return stat; }
%}
%enddef

TMAPS(bool,               bool)
TMAPS(int,                int)
TMAPS(short,              short)
TMAPS(long,               long)
TMAPS(unsigned int,       uint)
TMAPS(unsigned short,     ushort)
TMAPS(unsigned long,      ulong)
TMAPS(unsigned char,      uchar)
TMAPS(signed char,        schar)
TMAPS(float,              float)
TMAPS(double,             double)
TMAPS(long long,          longlong)
TMAPS(unsigned long long, ulonglong)

#endif

Generated by dwww version 1.15 on Sun Jun 30 22:46:46 CEST 2024.