Fix regression introduced in r12784 where SWIG accepts a non standard constructor and destructor name in %extend, where the typedef name is used as the constructor/destructor name.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12801 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
2fd6b5367d
commit
a141af9574
4 changed files with 178 additions and 16 deletions
105
Examples/test-suite/extend_constructor_destructor.i
Normal file
105
Examples/test-suite/extend_constructor_destructor.i
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
%module extend_constructor_destructor
|
||||
|
||||
%inline %{
|
||||
int global = 0;
|
||||
|
||||
namespace Space {
|
||||
typedef struct tagAStruct {
|
||||
int ivar;
|
||||
} AStruct;
|
||||
|
||||
struct BStruct {
|
||||
int ivar;
|
||||
};
|
||||
|
||||
typedef struct tagCStruct {
|
||||
int ivar;
|
||||
} CStruct;
|
||||
|
||||
// Unnamed struct
|
||||
typedef struct {
|
||||
int ivar;
|
||||
} DStruct;
|
||||
}
|
||||
|
||||
typedef struct tagEStruct {
|
||||
int ivar;
|
||||
} EStruct;
|
||||
|
||||
%}
|
||||
|
||||
%extend Junk {
|
||||
void thingy() {}
|
||||
}
|
||||
%inline %{
|
||||
struct Junk {};
|
||||
%}
|
||||
namespace Space {
|
||||
|
||||
%extend tagAStruct {
|
||||
tagAStruct(int ivar0) {
|
||||
Space::AStruct *s = new Space::AStruct();
|
||||
s->ivar = ivar0;
|
||||
global = ivar0;
|
||||
return s;
|
||||
}
|
||||
~tagAStruct() {
|
||||
global = -$self->ivar;
|
||||
delete $self;
|
||||
}
|
||||
}
|
||||
|
||||
%extend BStruct {
|
||||
BStruct(int ivar0) {
|
||||
Space::BStruct *s = new Space::BStruct();
|
||||
s->ivar = ivar0;
|
||||
global = ivar0;
|
||||
return s;
|
||||
}
|
||||
~BStruct() {
|
||||
global = -$self->ivar;
|
||||
delete $self;
|
||||
}
|
||||
}
|
||||
|
||||
%extend CStruct {
|
||||
CStruct(int ivar0) {
|
||||
Space::CStruct *s = new Space::CStruct();
|
||||
s->ivar = ivar0;
|
||||
global = ivar0;
|
||||
return s;
|
||||
}
|
||||
~CStruct() {
|
||||
global = -$self->ivar;
|
||||
delete $self;
|
||||
}
|
||||
}
|
||||
|
||||
%extend DStruct {
|
||||
DStruct(int ivar0) {
|
||||
Space::DStruct *s = new Space::DStruct();
|
||||
s->ivar = ivar0;
|
||||
global = ivar0;
|
||||
return s;
|
||||
}
|
||||
~DStruct() {
|
||||
global = -$self->ivar;
|
||||
delete $self;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
%extend EStruct {
|
||||
EStruct(int ivar0) {
|
||||
EStruct *s = new EStruct();
|
||||
s->ivar = ivar0;
|
||||
global = ivar0;
|
||||
return s;
|
||||
}
|
||||
~EStruct() {
|
||||
global = -$self->ivar;
|
||||
delete $self;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue