mirror of https://github.com/swig/swig
43 lines
775 B
OpenEdge ABL
43 lines
775 B
OpenEdge ABL
%module nested_template_base
|
|
|
|
#ifdef SWIGOCAML
|
|
%warnfilter(SWIGWARN_PARSE_KEYWORD) val;
|
|
#endif
|
|
|
|
%inline %{
|
|
template <class T> class OuterT {
|
|
public:
|
|
T outer(T t) { return t; }
|
|
};
|
|
%}
|
|
|
|
// The %template goes after OuterT and before OuterC as OuterC::InnerC's base is handled inside OuterC
|
|
%template(OuterTInnerS) OuterT<OuterC::InnerS>;
|
|
|
|
#if !defined(SWIGCSHARP) && !defined(SWIGJAVA)
|
|
%feature("flatnested") OuterC::InnerS;
|
|
%feature("flatnested") OuterC::InnerC;
|
|
#endif
|
|
|
|
|
|
%inline %{
|
|
class OuterC {
|
|
public:
|
|
struct InnerS;
|
|
class InnerC;
|
|
};
|
|
|
|
struct OuterC::InnerS {
|
|
int val;
|
|
InnerS(int val = 0) : val(val) {}
|
|
};
|
|
|
|
|
|
class OuterC::InnerC : public OuterT<InnerS> {
|
|
public:
|
|
OuterT<InnerS>& innerc() {
|
|
return *this;
|
|
}
|
|
};
|
|
%}
|