Added test for non-static method.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@8982 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
f1c1f6224d
commit
93a911c85b
1 changed files with 9 additions and 1 deletions
|
|
@ -2,7 +2,11 @@
|
||||||
%include factory.i
|
%include factory.i
|
||||||
|
|
||||||
%newobject Geometry::create;
|
%newobject Geometry::create;
|
||||||
%factory(Geometry *Geometry::create, Point, Circle);
|
|
||||||
|
%newobject Geometry::clone;
|
||||||
|
%factory(Geometry *Geometry::clone, Point, Circle);
|
||||||
|
%factory(Geometry *Point::clone, Point, Circle);
|
||||||
|
%factory(Geometry *Circle::clone, Point, Circle);
|
||||||
|
|
||||||
%inline {
|
%inline {
|
||||||
struct Geometry {
|
struct Geometry {
|
||||||
|
|
@ -14,16 +18,19 @@
|
||||||
virtual ~Geometry() {}
|
virtual ~Geometry() {}
|
||||||
virtual int draw() = 0;
|
virtual int draw() = 0;
|
||||||
static Geometry *create(GeomType i);
|
static Geometry *create(GeomType i);
|
||||||
|
virtual Geometry *clone() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Point : Geometry {
|
struct Point : Geometry {
|
||||||
int draw() { return 1; }
|
int draw() { return 1; }
|
||||||
double width() { return 1.0; }
|
double width() { return 1.0; }
|
||||||
|
Geometry *clone() { return new Point(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Circle : Geometry {
|
struct Circle : Geometry {
|
||||||
int draw() { return 2; }
|
int draw() { return 2; }
|
||||||
double radius() { return 1.5; }
|
double radius() { return 1.5; }
|
||||||
|
Geometry *clone() { return new Circle(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
Geometry *Geometry::create(GeomType type) {
|
Geometry *Geometry::create(GeomType type) {
|
||||||
|
|
@ -35,3 +42,4 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue