blob: b5b018b2fbeac0a5eea52c5b1130b106e373c21b (
plain)
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;
%}
|