Ignored enum fixes.
C#/Java - Enums which have been ignored via %ignore and are subsequently used are handled slightly differently. Type wrapper classes are now generated which are effectively a wrapper of an empty enum. Previously in Java uncompilable code was generated and in C# an int was used.
This commit is contained in:
parent
7bec7c1b60
commit
dc8428889e
6 changed files with 36 additions and 7 deletions
|
|
@ -3175,8 +3175,8 @@ public:
|
|||
if (anonymous_enum) {
|
||||
replacementname = NewString("int");
|
||||
} else {
|
||||
// An unknown enum - one that has not been parsed (neither a C enum forward reference nor a definition)
|
||||
replacementname = SwigType_base(classnametype);
|
||||
// An unknown enum - one that has not been parsed (neither a C enum forward reference nor a definition) or an ignored enum
|
||||
replacementname = NewStringf("SWIGTYPE%s", SwigType_manglestr(classnametype));
|
||||
Replace(replacementname, "enum ", "", DOH_REPLACE_ANY);
|
||||
Setattr(swig_types_hash, replacementname, classnametype);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4514,10 +4514,12 @@ private:
|
|||
} else if (Strcmp(t, "enum ") == 0) {
|
||||
ret = NewString("int");
|
||||
} else {
|
||||
// An unknown enum - one that has not been parsed (neither a C enum forward reference nor a definition)
|
||||
ret = SwigType_base(t);
|
||||
Replace(ret, "enum ", "", DOH_REPLACE_ANY);
|
||||
// An unknown enum - one that has not been parsed (neither a C enum forward reference nor a definition) or an ignored enum
|
||||
String *tt = Copy(t);
|
||||
Replace(tt, "enum ", "", DOH_REPLACE_ANY);
|
||||
ret = exportedName(tt);
|
||||
Setattr(undefined_enum_types, t, ret);
|
||||
Delete(tt);
|
||||
}
|
||||
} else if (SwigType_isfunctionpointer(type) || SwigType_isfunction(type)) {
|
||||
ret = NewString("_swig_fnptr");
|
||||
|
|
|
|||
|
|
@ -3090,8 +3090,8 @@ public:
|
|||
if (anonymous_enum) {
|
||||
replacementname = NewString("int");
|
||||
} else {
|
||||
// An unknown enum - one that has not been parsed (neither a C enum forward reference nor a definition)
|
||||
replacementname = SwigType_base(classnametype);
|
||||
// An unknown enum - one that has not been parsed (neither a C enum forward reference nor a definition) or an ignored enum
|
||||
replacementname = NewStringf("SWIGTYPE%s", SwigType_manglestr(classnametype));
|
||||
Replace(replacementname, "enum ", "", DOH_REPLACE_ANY);
|
||||
Setattr(swig_types_hash, replacementname, classnametype);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue