Removed last vestiges of enums being handled as integers in the core.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@6775 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
8b64934cff
commit
95b3b8db60
1 changed files with 18 additions and 17 deletions
|
|
@ -2477,28 +2477,26 @@ Language::symbolLookup(String *s) {
|
||||||
Node *
|
Node *
|
||||||
Language::classLookup(SwigType *s) {
|
Language::classLookup(SwigType *s) {
|
||||||
Node *n = 0;
|
Node *n = 0;
|
||||||
SwigType *lt, *ty1,*ty2;
|
|
||||||
String *base;
|
|
||||||
String *prefix;
|
|
||||||
Symtab *stab = 0;
|
|
||||||
|
|
||||||
/* Look in hash of cached values */
|
/* Look in hash of cached values */
|
||||||
n = Getattr(classtypes,s);
|
n = Getattr(classtypes,s);
|
||||||
if (!n) {
|
if (!n) {
|
||||||
|
Symtab *stab = 0;
|
||||||
lt = SwigType_ltype(s);
|
SwigType *lt = SwigType_ltype(s);
|
||||||
ty1 = SwigType_typedef_resolve_all(lt);
|
SwigType *ty1 = SwigType_typedef_resolve_all(lt);
|
||||||
ty2 = SwigType_strip_qualifiers(ty1);
|
SwigType *ty2 = SwigType_strip_qualifiers(ty1);
|
||||||
Delete(lt);
|
Delete(lt);
|
||||||
Delete(ty1);
|
Delete(ty1);
|
||||||
|
lt = 0;
|
||||||
|
ty1 = 0;
|
||||||
|
|
||||||
base = SwigType_base(ty2);
|
String *base = SwigType_base(ty2);
|
||||||
|
|
||||||
Replaceall(base,"class ","");
|
Replaceall(base,"class ","");
|
||||||
Replaceall(base,"struct ","");
|
Replaceall(base,"struct ","");
|
||||||
Replaceall(base,"union ","");
|
Replaceall(base,"union ","");
|
||||||
|
|
||||||
prefix = SwigType_prefix(ty2);
|
String *prefix = SwigType_prefix(ty2);
|
||||||
|
|
||||||
/* Do a symbol table search on the base type */
|
/* Do a symbol table search on the base type */
|
||||||
while (!n) {
|
while (!n) {
|
||||||
|
|
@ -2529,7 +2527,6 @@ Language::classLookup(SwigType *s) {
|
||||||
Delete(ty2);
|
Delete(ty2);
|
||||||
Delete(base);
|
Delete(base);
|
||||||
Delete(prefix);
|
Delete(prefix);
|
||||||
|
|
||||||
}
|
}
|
||||||
if (n && (Getattr(n,"feature:ignore"))) {
|
if (n && (Getattr(n,"feature:ignore"))) {
|
||||||
n = 0;
|
n = 0;
|
||||||
|
|
@ -2548,24 +2545,28 @@ Language::classLookup(SwigType *s) {
|
||||||
Node *
|
Node *
|
||||||
Language::enumLookup(SwigType *s) {
|
Language::enumLookup(SwigType *s) {
|
||||||
Node *n = 0;
|
Node *n = 0;
|
||||||
Symtab *stab = 0;
|
|
||||||
|
|
||||||
/* Look in hash of cached values */
|
/* Look in hash of cached values */
|
||||||
n = Getattr(enumtypes,s);
|
n = Getattr(enumtypes,s);
|
||||||
if (!n) {
|
if (!n) {
|
||||||
|
Symtab *stab = 0;
|
||||||
SwigType *ty1 = SwigType_typedef_resolve_all(s);
|
SwigType *lt = SwigType_ltype(s);
|
||||||
|
SwigType *ty1 = SwigType_typedef_resolve_all(lt);
|
||||||
SwigType *ty2 = SwigType_strip_qualifiers(ty1);
|
SwigType *ty2 = SwigType_strip_qualifiers(ty1);
|
||||||
|
Delete(lt);
|
||||||
Delete(ty1);
|
Delete(ty1);
|
||||||
|
lt = 0;
|
||||||
ty1 = 0;
|
ty1 = 0;
|
||||||
|
|
||||||
Replaceall(ty2,"enum ","");
|
String *base = SwigType_base(ty2);
|
||||||
|
|
||||||
|
Replaceall(base,"enum ","");
|
||||||
String *prefix = SwigType_prefix(ty2);
|
String *prefix = SwigType_prefix(ty2);
|
||||||
|
|
||||||
/* Look for type in symbol table */
|
/* Look for type in symbol table */
|
||||||
while (!n) {
|
while (!n) {
|
||||||
Hash *nstab;
|
Hash *nstab;
|
||||||
n = Swig_symbol_clookup(ty2,stab);
|
n = Swig_symbol_clookup(base,stab);
|
||||||
if (!n) break;
|
if (!n) break;
|
||||||
if (Strcmp(nodeType(n),"enum") == 0) break;
|
if (Strcmp(nodeType(n),"enum") == 0) break;
|
||||||
n = parentNode(n);
|
n = parentNode(n);
|
||||||
|
|
@ -2586,8 +2587,8 @@ Language::enumLookup(SwigType *s) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Delete(ty2);
|
Delete(ty2);
|
||||||
|
Delete(base);
|
||||||
Delete(prefix);
|
Delete(prefix);
|
||||||
|
|
||||||
}
|
}
|
||||||
if (n && (Getattr(n,"feature:ignore"))) {
|
if (n && (Getattr(n,"feature:ignore"))) {
|
||||||
n = 0;
|
n = 0;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue