// Test cases for classes that do *NOT* result in smart-pointer wrapping %module smart_pointer_multi_typedef %inline %{ struct Foo { int x; int getx() { return x; } }; typedef Foo FooObj; typedef FooObj *FooPtr; class Bar { Foo *f; public: Bar(Foo *f) : f(f) { } FooPtr operator->() { return f; } }; typedef Bar BarObj; typedef Bar &BarRef; class Spam { Bar *b; public: Spam(Bar *b) : b(b) { } BarObj operator->() { return *b; } }; class Grok { Bar *b; public: Grok(Bar *b) : b(b) { } BarRef operator->() { return *b; } }; %}