git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10423 626c5289-ae23-0410-ae9c-e8d60b6d4f22
76 lines
2.4 KiB
OpenEdge ABL
76 lines
2.4 KiB
OpenEdge ABL
// Tests for the allprotected option
|
|
|
|
%module(directors="1", allprotected="1") allprotected
|
|
|
|
%{
|
|
#include <string>
|
|
%}
|
|
|
|
%include "std_string.i"
|
|
|
|
%feature("director") PublicBase;
|
|
%feature("director") ProtectedBase;
|
|
|
|
// protected types not supported (ProtectedEnum, IntegerType). Make sure they can be ignored.
|
|
%ignore ProtectedBase::protectedenum;
|
|
%ignore ProtectedBase::typedefs;
|
|
|
|
%inline %{
|
|
class Klass {
|
|
std::string name;
|
|
public:
|
|
Klass(const std::string& n) : name(n) {}
|
|
std::string getName() { return name; }
|
|
};
|
|
|
|
class PublicBase {
|
|
std::string str;
|
|
public:
|
|
enum AnEnum { EnumVal1, EnumVal2 };
|
|
public:
|
|
PublicBase(const char* s): str(s) {}
|
|
virtual ~PublicBase() { }
|
|
virtual std::string virtualMethod() const { return "PublicBase"; }
|
|
Klass instanceMethod(Klass k) const { return k; }
|
|
Klass *instanceOverloaded(Klass *k) const { return k; }
|
|
Klass *instanceOverloaded(Klass *k, std::string name) const { return new Klass(name); }
|
|
static Klass staticMethod(Klass k) { return k; }
|
|
static Klass *staticOverloaded(Klass *k) { return k; }
|
|
static Klass *staticOverloaded(Klass *k, std::string name) { return new Klass(name); }
|
|
int instanceMemberVariable;
|
|
static int staticMemberVariable;
|
|
static const int staticConstMemberVariable = 20;
|
|
AnEnum anEnum;
|
|
};
|
|
int PublicBase::staticMemberVariable = 10;
|
|
|
|
class ProtectedBase {
|
|
std::string str;
|
|
public:
|
|
enum AnEnum { EnumVal1, EnumVal2 };
|
|
std::string getName() { return str; }
|
|
protected:
|
|
ProtectedBase(const char* s): str(s) {}
|
|
virtual ~ProtectedBase() { }
|
|
virtual std::string virtualMethod() const { return "ProtectedBase"; }
|
|
Klass instanceMethod(Klass k) const { return k; }
|
|
Klass *instanceOverloaded(Klass *k) const { return k; }
|
|
Klass *instanceOverloaded(Klass *k, std::string name) const { return new Klass(name); }
|
|
static Klass staticMethod(Klass k) { return k; }
|
|
static Klass *staticOverloaded(Klass *k) { return k; }
|
|
static Klass *staticOverloaded(Klass *k, std::string name) { return new Klass(name); }
|
|
int instanceMemberVariable;
|
|
static int staticMemberVariable;
|
|
static const int staticConstMemberVariable = 20;
|
|
AnEnum anEnum;
|
|
|
|
// unsupported: types defined with protected access and thus methods/variables which use them
|
|
enum ProtectedEnum { ProtEnumVal1, ProtEnumVal2 };
|
|
typedef int IntegerType;
|
|
ProtectedEnum protectedenum;
|
|
IntegerType typedefs(IntegerType it) { return it; }
|
|
};
|
|
int ProtectedBase::staticMemberVariable = 10;
|
|
|
|
%}
|
|
|