Add improved namespace support - the nspace feature, working for Java only at the moment.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11896 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
2442211292
commit
1253657bb4
23 changed files with 645 additions and 266 deletions
|
|
@ -36,6 +36,7 @@ class TypePass:private Dispatcher {
|
|||
Node *module;
|
||||
int importmode;
|
||||
String *nsname;
|
||||
String *nssymname;
|
||||
Hash *classhash;
|
||||
List *normalize;
|
||||
|
||||
|
|
@ -296,6 +297,7 @@ class TypePass:private Dispatcher {
|
|||
inclass = 0;
|
||||
normalize = 0;
|
||||
nsname = 0;
|
||||
nssymname = 0;
|
||||
classhash = Getattr(n, "classes");
|
||||
emit_children(n);
|
||||
normalize_list();
|
||||
|
|
@ -415,6 +417,10 @@ class TypePass:private Dispatcher {
|
|||
Setattr(n, "tdname", tdname);
|
||||
}
|
||||
}
|
||||
if (nssymname) {
|
||||
if (GetFlag(n, "feature:nspace"))
|
||||
Setattr(n, "sym:nspace", nssymname);
|
||||
}
|
||||
SwigType_new_scope(scopename);
|
||||
SwigType_attach_symtab(Getattr(n, "symtab"));
|
||||
|
||||
|
|
@ -535,7 +541,9 @@ class TypePass:private Dispatcher {
|
|||
}
|
||||
}
|
||||
String *oldnsname = nsname;
|
||||
String *oldnssymname = nssymname;
|
||||
nsname = Swig_symbol_qualified(Getattr(n, "symtab"));
|
||||
nssymname = Swig_symbol_qualified_language_scopename(Getattr(n, "symtab"));
|
||||
symtab = Swig_symbol_setscope(Getattr(n, "symtab"));
|
||||
emit_children(n);
|
||||
Swig_symbol_setscope(symtab);
|
||||
|
|
@ -557,6 +565,8 @@ class TypePass:private Dispatcher {
|
|||
}
|
||||
normalize = olist;
|
||||
|
||||
Delete(nssymname);
|
||||
nssymname = oldnssymname;
|
||||
Delete(nsname);
|
||||
nsname = oldnsname;
|
||||
return SWIG_OK;
|
||||
|
|
@ -734,6 +744,11 @@ class TypePass:private Dispatcher {
|
|||
}
|
||||
Setattr(n, "enumtype", enumtype);
|
||||
|
||||
if (nssymname) {
|
||||
if (GetFlag(n, "feature:nspace"))
|
||||
Setattr(n, "sym:nspace", nssymname);
|
||||
}
|
||||
|
||||
// This block of code is for dealing with %ignore on an enum item where the target language
|
||||
// attempts to use the C enum value in the target language itself and expects the previous enum value
|
||||
// to be one more than the previous value... the previous enum item might not exist if it is ignored!
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue