Fix %extend on typedef classes in a namespace using the typedef name
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12800 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
282ab494ab
commit
2fd6b5367d
5 changed files with 164 additions and 3 deletions
|
|
@ -199,6 +199,7 @@ CPP_TEST_CASES += \
|
|||
extend_placement \
|
||||
extend_template \
|
||||
extend_template_ns \
|
||||
extend_typedef_class \
|
||||
extern_c \
|
||||
extern_namespace \
|
||||
extern_throws \
|
||||
|
|
|
|||
81
Examples/test-suite/extend_typedef_class.i
Normal file
81
Examples/test-suite/extend_typedef_class.i
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
%module extend_typedef_class
|
||||
|
||||
// classes in global namespace
|
||||
%inline %{
|
||||
typedef struct tagAClass {
|
||||
int membervar;
|
||||
} AClass;
|
||||
|
||||
struct BClass {
|
||||
int membervar;
|
||||
};
|
||||
|
||||
typedef struct tagCClass {
|
||||
int membervar;
|
||||
} CClass;
|
||||
|
||||
// Unnamed struct
|
||||
typedef struct {
|
||||
int membervar;
|
||||
} DClass;
|
||||
%}
|
||||
|
||||
%extend tagAClass {
|
||||
int getvar() { return $self->membervar; }
|
||||
}
|
||||
|
||||
%extend BClass {
|
||||
int getvar() { return $self->membervar; }
|
||||
}
|
||||
|
||||
%extend CClass {
|
||||
int getvar() { return $self->membervar; }
|
||||
}
|
||||
|
||||
%extend DClass {
|
||||
int getvar() { return $self->membervar; }
|
||||
}
|
||||
|
||||
|
||||
// classes in a namespace
|
||||
%inline %{
|
||||
namespace Space {
|
||||
typedef struct tagAStruct {
|
||||
int membervar;
|
||||
} AStruct;
|
||||
|
||||
struct BStruct {
|
||||
int membervar;
|
||||
};
|
||||
|
||||
typedef struct tagCStruct {
|
||||
int membervar;
|
||||
} CStruct;
|
||||
|
||||
// Unnamed struct
|
||||
typedef struct {
|
||||
int membervar;
|
||||
} DStruct;
|
||||
}
|
||||
%}
|
||||
|
||||
namespace Space {
|
||||
|
||||
%extend tagAStruct {
|
||||
int getvar() { return $self->membervar; }
|
||||
}
|
||||
|
||||
%extend BStruct {
|
||||
int getvar() { return $self->membervar; }
|
||||
}
|
||||
|
||||
%extend CStruct {
|
||||
int getvar() { return $self->membervar; }
|
||||
}
|
||||
|
||||
%extend DStruct {
|
||||
int getvar() { return $self->membervar; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
65
Examples/test-suite/java/extend_typedef_class_runme.java
Normal file
65
Examples/test-suite/java/extend_typedef_class_runme.java
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
import extend_typedef_class.*;
|
||||
|
||||
public class extend_typedef_class_runme {
|
||||
|
||||
static {
|
||||
try {
|
||||
System.loadLibrary("extend_typedef_class");
|
||||
} catch (UnsatisfiedLinkError e) {
|
||||
System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e);
|
||||
System.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String argv[]) {
|
||||
// No namespace
|
||||
{
|
||||
AClass s = new AClass();
|
||||
s.setMembervar(10);
|
||||
checkMatch(s.getvar(), 10);
|
||||
}
|
||||
{
|
||||
BClass s = new BClass();
|
||||
s.setMembervar(20);
|
||||
checkMatch(s.getvar(), 20);
|
||||
}
|
||||
{
|
||||
CClass s = new CClass();
|
||||
s.setMembervar(30);
|
||||
checkMatch(s.getvar(), 30);
|
||||
}
|
||||
{
|
||||
DClass s = new DClass();
|
||||
s.setMembervar(40);
|
||||
checkMatch(s.getvar(), 40);
|
||||
}
|
||||
|
||||
// In namespace
|
||||
{
|
||||
AStruct s = new AStruct();
|
||||
s.setMembervar(10);
|
||||
checkMatch(s.getvar(), 10);
|
||||
}
|
||||
{
|
||||
BStruct s = new BStruct();
|
||||
s.setMembervar(20);
|
||||
checkMatch(s.getvar(), 20);
|
||||
}
|
||||
{
|
||||
CStruct s = new CStruct();
|
||||
s.setMembervar(30);
|
||||
checkMatch(s.getvar(), 30);
|
||||
}
|
||||
{
|
||||
DStruct s = new DStruct();
|
||||
s.setMembervar(40);
|
||||
checkMatch(s.getvar(), 40);
|
||||
}
|
||||
}
|
||||
|
||||
public static void checkMatch(int expected, int got) {
|
||||
if (expected != got)
|
||||
throw new RuntimeException("Value incorrect. Expected: " + expected + " got: " + got);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue