blob: d77485c7741cc3238e554e9686bb4570742d751b [file] [log] [blame]
// This file tests SWIG's tracking of C++ typedef declarations
%module cpp_typedef
%{
#if defined(_MSC_VER)
#pragma warning( disable : 5208) // warning C5208: unnamed class used in typedef name cannot declare members other than non-static data members, member enumerations, or member classes
#endif
class Bar {
public:
};
%}
%inline %{
class Foo {
public:
typedef Bar SomeBar;
typedef SomeBar SomeOtherBar;
SomeOtherBar bar() {
SomeOtherBar b;
return b;
}
static SomeOtherBar sbar() {
SomeOtherBar b;
return b;
}
};
// Test that the correct types are used for typedef struct declarations
typedef struct {
int something;
void m() {}
} UnnamedStruct;
typedef struct NamedStruct {
int something;
void m() {}
} TypedefNamedStruct;
typedef TypedefNamedStruct DoubleTypedef;
class Test {
public:
UnnamedStruct test1(UnnamedStruct a) {return a;};
struct NamedStruct test2(struct NamedStruct a) {return a;};
TypedefNamedStruct test3(TypedefNamedStruct a) {return a;};
DoubleTypedef test4(DoubleTypedef a) {return a;};
};
%}