mirror of https://github.com/swig/swig
298 lines
4.3 KiB
OpenEdge ABL
298 lines
4.3 KiB
OpenEdge ABL
%module namespace_class
|
|
|
|
|
|
%warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Ala::Ola;
|
|
|
|
#ifdef SWIGD
|
|
%warnfilter(SWIGWARN_IGNORE_OPERATOR_LT);
|
|
#endif
|
|
|
|
%inline %{
|
|
template<class T> void foobar(T t) {}
|
|
namespace test {
|
|
template<class T> void barfoo(T t) {}
|
|
}
|
|
%}
|
|
|
|
%template(FooBarInt) ::foobar<int>;
|
|
%template(BarFooInt) test::barfoo<int>;
|
|
|
|
|
|
%inline %{
|
|
template <class C>
|
|
struct Bar_T
|
|
{
|
|
};
|
|
|
|
|
|
|
|
namespace test {
|
|
enum Hello {
|
|
Hi
|
|
};
|
|
|
|
struct Test;
|
|
|
|
struct Bar {
|
|
Hello foo(Hello h) {
|
|
return h;
|
|
}
|
|
};
|
|
|
|
namespace hola {
|
|
struct Bor;
|
|
struct Foo;
|
|
struct Foobar;
|
|
template <class T> struct BarT {
|
|
};
|
|
|
|
template <class T> class FooT;
|
|
}
|
|
|
|
template <class T>
|
|
class hola::FooT {
|
|
public:
|
|
Hello foo(Hello h) {
|
|
return h;
|
|
}
|
|
|
|
T bar(T h) {
|
|
return h;
|
|
}
|
|
};
|
|
|
|
namespace hola {
|
|
template <> class FooT<double>;
|
|
template <> class FooT<int>;
|
|
}
|
|
|
|
template <>
|
|
class hola::FooT<double> {
|
|
public:
|
|
double moo(double h) {
|
|
return h;
|
|
}
|
|
};
|
|
|
|
int a;
|
|
|
|
struct hola::Foo : Bar {
|
|
Hello bar(Hello h) {
|
|
return h;
|
|
}
|
|
};
|
|
}
|
|
|
|
struct test::Test {
|
|
Hello foo(Hello h) {
|
|
return h;
|
|
}
|
|
};
|
|
|
|
struct test::hola::Bor {
|
|
Hello foo(Hello h) {
|
|
return h;
|
|
}
|
|
};
|
|
|
|
namespace test {
|
|
struct hola::Foobar : Bar {
|
|
Hello bar(Hello h) {
|
|
return h;
|
|
}
|
|
};
|
|
}
|
|
|
|
template <>
|
|
class test::hola::FooT<int> {
|
|
public:
|
|
int quack(int h) {
|
|
return h;
|
|
}
|
|
};
|
|
|
|
%}
|
|
|
|
|
|
namespace test
|
|
{
|
|
namespace hola {
|
|
%template(FooT_i) FooT<int>;
|
|
}
|
|
|
|
%template(FooT_H) hola::FooT<Hello>;
|
|
}
|
|
|
|
%template(FooT_d) ::test::hola::FooT<double>;
|
|
%template(BarT_H) test::hola::BarT<test::Hello>;
|
|
|
|
%inline %{
|
|
|
|
namespace hi {
|
|
namespace hello {
|
|
template <class T> struct PooT;
|
|
}
|
|
|
|
namespace hello {
|
|
template <class T> struct PooT
|
|
{
|
|
};
|
|
}
|
|
}
|
|
%}
|
|
|
|
%template(Poo_i) hi::hello::PooT<int>;
|
|
|
|
%inline %{
|
|
|
|
template <class T> struct BooT {
|
|
};
|
|
|
|
namespace test {
|
|
|
|
typedef ::BooT<Hello> BooT_H;
|
|
}
|
|
|
|
%}
|
|
|
|
using test::Hello;
|
|
%template(BooT_H) ::BooT<Hello>;
|
|
%template(BooT_i) ::BooT<int>;
|
|
|
|
|
|
%inline %{
|
|
|
|
namespace jafar {
|
|
namespace jmath {
|
|
class EulerT3D {
|
|
public:
|
|
static void hello(){}
|
|
|
|
template<class VecFrame, class Vec, class VecRes>
|
|
static void toFrame(const VecFrame& frame_, const Vec&v_,const VecRes& vRes){}
|
|
|
|
template<class T>
|
|
void operator ()(T& x){}
|
|
|
|
template<class T>
|
|
void operator < (T& x){}
|
|
|
|
template<class T>
|
|
operator Bar_T<T> () {}
|
|
|
|
};
|
|
}
|
|
}
|
|
%}
|
|
|
|
%template(toFrame) jafar::jmath::EulerT3D::toFrame<int,int,int>;
|
|
%template(callint) jafar::jmath::EulerT3D::operator()<int>;
|
|
%template(lessint) jafar::jmath::EulerT3D::operator < <int>;
|
|
%template(callfooi) jafar::jmath::EulerT3D::operator() <test::hola::FooT<int> >;
|
|
%template(lessfooi) jafar::jmath::EulerT3D::operator < < test::hola::FooT<int> >;
|
|
|
|
|
|
%inline %{
|
|
|
|
namespace {
|
|
/* the unnamed namespace is 'private', so, the following
|
|
declarations shouldn't be wrapped */
|
|
class Private1
|
|
{
|
|
};
|
|
|
|
}
|
|
|
|
namespace a
|
|
{
|
|
namespace
|
|
{
|
|
class Private2
|
|
{
|
|
};
|
|
}
|
|
}
|
|
|
|
%}
|
|
|
|
%inline %{
|
|
class Ala {
|
|
public :
|
|
Ala() {}
|
|
class Ola {
|
|
public:
|
|
Ola() {}
|
|
void eek() {}
|
|
};
|
|
|
|
template <class T>
|
|
static void hi()
|
|
{
|
|
}
|
|
};
|
|
%}
|
|
|
|
|
|
%template(hi) Ala::hi<int>;
|
|
|
|
%extend jafar::jmath::EulerT3D
|
|
{
|
|
|
|
}
|
|
|
|
%rename(FLACFile) TagLib::FLAC::File;
|
|
|
|
%inline {
|
|
namespace TagLib
|
|
{
|
|
class File {
|
|
public:
|
|
File() {}
|
|
};
|
|
|
|
class AudioProperties {
|
|
};
|
|
|
|
class AudioPropertiesFile {
|
|
public:
|
|
typedef TagLib::File File;
|
|
};
|
|
|
|
namespace FLAC
|
|
{
|
|
class File;
|
|
class Properties : public AudioProperties {
|
|
public:
|
|
Properties(File *) {}
|
|
};
|
|
|
|
class PropertiesFile : public AudioPropertiesFile {
|
|
public:
|
|
PropertiesFile(File * = 0) {}
|
|
};
|
|
|
|
namespace bar {
|
|
class PropertiesFree : public AudioProperties {
|
|
public:
|
|
PropertiesFree(File *) {}
|
|
};
|
|
}
|
|
|
|
class FooFilePrivate : private PropertiesFile {
|
|
public:
|
|
FooFilePrivate(File *) {}
|
|
};
|
|
|
|
class FooFile : public PropertiesFile {
|
|
public:
|
|
FooFile(File *) {}
|
|
};
|
|
|
|
class File {
|
|
public:
|
|
File() {}
|
|
};
|
|
}
|
|
}
|
|
}
|