swig/Examples/test-suite/newobject1.i
Dave Beazley 12a43edc2d The great merge
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4141 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2002-11-30 22:01:28 +00:00

51 lines
927 B
OpenEdge ABL

/**
* 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;
%}