%extend symbols for nested structs get into a wrong C symbol table
This commit is contained in:
parent
68347cb723
commit
665c4f581b
2 changed files with 15 additions and 6 deletions
|
|
@ -10,6 +10,7 @@
|
||||||
char hi_extend() {
|
char hi_extend() {
|
||||||
return $self->c;
|
return $self->c;
|
||||||
}
|
}
|
||||||
|
static const long swig_size = sizeof(hiA);
|
||||||
}
|
}
|
||||||
%extend lowA {
|
%extend lowA {
|
||||||
lowA() {
|
lowA() {
|
||||||
|
|
@ -21,6 +22,7 @@
|
||||||
int low_extend() {
|
int low_extend() {
|
||||||
return $self->num;
|
return $self->num;
|
||||||
}
|
}
|
||||||
|
static const long swig_size = sizeof(lowA);
|
||||||
}
|
}
|
||||||
|
|
||||||
%extend hiB {
|
%extend hiB {
|
||||||
|
|
@ -32,6 +34,7 @@
|
||||||
char hi_extend() {
|
char hi_extend() {
|
||||||
return $self->c;
|
return $self->c;
|
||||||
}
|
}
|
||||||
|
static const long swig_size = sizeof(hiB);
|
||||||
}
|
}
|
||||||
%extend lowB {
|
%extend lowB {
|
||||||
lowB() {
|
lowB() {
|
||||||
|
|
@ -43,6 +46,7 @@
|
||||||
int low_extend() {
|
int low_extend() {
|
||||||
return $self->num;
|
return $self->num;
|
||||||
}
|
}
|
||||||
|
static const long swig_size = sizeof(lowB);
|
||||||
}
|
}
|
||||||
|
|
||||||
%extend FOO_bar {
|
%extend FOO_bar {
|
||||||
|
|
@ -50,6 +54,9 @@
|
||||||
$self->d = 1;
|
$self->d = 1;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
%extend NestedA {
|
||||||
|
static const long swig_size = sizeof(NestedA);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -362,7 +362,15 @@ void Swig_nested_name_unnamed_c_structs(Node *n) {
|
||||||
Delete(bases);
|
Delete(bases);
|
||||||
}
|
}
|
||||||
Setattr(classhash, name, c);
|
Setattr(classhash, name, c);
|
||||||
|
|
||||||
|
// Merge the extension into the symbol table
|
||||||
|
if (Node *am = Getattr(Swig_extend_hash(), name)) {
|
||||||
|
Swig_extend_merge(c, am);
|
||||||
|
Swig_extend_append_previous(c, am);
|
||||||
|
Delattr(Swig_extend_hash(), name);
|
||||||
|
}
|
||||||
Swig_symbol_popscope();
|
Swig_symbol_popscope();
|
||||||
|
|
||||||
// process declarations following this type (assign correct new type)
|
// process declarations following this type (assign correct new type)
|
||||||
SwigType *ty = Copy(name);
|
SwigType *ty = Copy(name);
|
||||||
Node *decl = nextSibling(c);
|
Node *decl = nextSibling(c);
|
||||||
|
|
@ -376,12 +384,6 @@ void Swig_nested_name_unnamed_c_structs(Node *n) {
|
||||||
decl = nextSibling(decl);
|
decl = nextSibling(decl);
|
||||||
}
|
}
|
||||||
Delete(ty);
|
Delete(ty);
|
||||||
if (Node *am = Getattr(Swig_extend_hash(), name)) {
|
|
||||||
// Merge the extension into the symbol table
|
|
||||||
Swig_extend_merge(c, am);
|
|
||||||
Swig_extend_append_previous(c, am);
|
|
||||||
Delattr(Swig_extend_hash(), name);
|
|
||||||
}
|
|
||||||
Swig_symbol_setscope(Swig_symbol_global_scope());
|
Swig_symbol_setscope(Swig_symbol_global_scope());
|
||||||
add_symbols_c(c);
|
add_symbols_c(c);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue