1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
/**
* 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;
%}
|