/** * The purpose of this test is to confirm that a language module * correctly handles the case when C++ class member functions (of both * the static and non-static persuasion) have been tagged with the * %newobject directive. */ %module newobject1 %newobject Foo::makeFoo(); %newobject Foo::makeMore(); %inline %{ class Foo { private: Foo(const Foo&); Foo& operator=(const Foo&); private: static int m_fooCount; protected: Foo() { m_fooCount++; } public: // Factory function (static) static Foo *makeFoo() { return new Foo; } // Factory function (regular) Foo *makeMore() { return new Foo; } // Return the number of instances static int fooCount() { return m_fooCount; } // Destructor ~Foo() { m_fooCount--; } }; %} %{ // Static member initialization (not wrapped) int Foo::m_fooCount = 0; %}