mirror of https://github.com/swig/swig
80 lines
1.9 KiB
OpenEdge ABL
80 lines
1.9 KiB
OpenEdge ABL
%module li_std_pair
|
|
|
|
%include "std_pair.i"
|
|
|
|
namespace std {
|
|
%template(IntPair) pair<int, int>;
|
|
}
|
|
|
|
%inline %{
|
|
|
|
/* Test the "out" typemap for pair<T, U> */
|
|
std::pair<int, int> makeIntPair(int a, int b) {
|
|
return std::make_pair(a, b);
|
|
}
|
|
|
|
/**
|
|
* There is no "out" typemap for a pointer to a pair, so
|
|
* this should return a wrapped instance of a std::pair
|
|
* instead of the native "array" type for the target language.
|
|
*/
|
|
std::pair<int, int> * makeIntPairPtr(int a, int b) {
|
|
static std::pair<int, int> p = std::make_pair(a, b);
|
|
return &p;
|
|
}
|
|
|
|
/**
|
|
* There is no "out" typemap for a non-const reference to a pair, so
|
|
* this should return a wrapped instance of a std::pair instead of
|
|
* the native "array" type for the target language.
|
|
*/
|
|
std::pair<int, int>& makeIntPairRef(int a, int b) {
|
|
static std::pair<int, int> p = std::make_pair(a, b);
|
|
return p;
|
|
}
|
|
|
|
/**
|
|
* There is no "out" typemap for a const reference to a pair, so
|
|
* this should return a wrapped instance of a std::pair
|
|
* instead of the native "array" type for the target language.
|
|
*/
|
|
const std::pair<int, int> & makeIntPairConstRef(int a, int b) {
|
|
static std::pair<int, int> p = std::make_pair(a, b);
|
|
return p;
|
|
}
|
|
|
|
/* Test the "in" typemap for pair<T, U> */
|
|
int product1(std::pair<int, int> p) {
|
|
return p.first*p.second;
|
|
}
|
|
|
|
/* Test the "in" typemap for const pair<T, U>& */
|
|
int product2(const std::pair<int, int>& p) {
|
|
return p.first*p.second;
|
|
}
|
|
|
|
/* Test the "in" typemap for const pair<T, U>* */
|
|
int product3(const std::pair<int, int> *p) {
|
|
return p->first*p->second;
|
|
}
|
|
|
|
%}
|
|
|
|
// Test that the digraph <::aa::Holder> is not generated for stl containers
|
|
%include <std_pair.i>
|
|
|
|
%inline %{
|
|
namespace aa {
|
|
struct Holder {
|
|
Holder(int n = 0) : number(n) {}
|
|
int number;
|
|
};
|
|
}
|
|
%}
|
|
|
|
%template(PairTest) std::pair< ::aa::Holder, int >;
|
|
|
|
%inline %{
|
|
std::pair< ::aa::Holder, int > pair1(std::pair< ::aa::Holder, int > x) { return x; }
|
|
%}
|