/trunk/Examples/test-suite/newobject1.i
Swig | 51 lines | 38 code | 7 blank | 6 comment | 0 complexity | ed4c8de87e881346ccc5da8607d792dd MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- /**
- * 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;
- %}