fixed %template within %extend, test added

fixed language symbol table nested classes name separator, test added
fixed %feature "flatnested" working with %extend
fixed Swig_offset_string for empty string
added simple template to save/restore values in current scope (readability reasons)
This commit is contained in:
Vladimir Kalinin 2013-12-19 02:11:22 +04:00
commit b4fef06c42
12 changed files with 55 additions and 39 deletions

View file

@ -29,6 +29,7 @@ public class template_nested_runme {
OuterClass.T_OuterClassInner2NormalClass inner2 = new OuterClass.T_OuterClassInner2NormalClass();
inner2.setEmbeddedVar(2);
OuterClass.T_OuterClassInner2NormalClass inner22 = new OuterClass().useInner2Again(inner2);
OuterClass.T_OuterClassInner1Double inner3 = new OuterClass.T_OuterClassInner1Double();
}
}

View file

@ -167,10 +167,16 @@ struct Outer {
///////////////////////////////////////////
typedef struct InnerSameName {
Integer x;
struct InnerSameName2 {};
} InnerSameName;
InnerSameName* makeInnerSameName() { return 0; }
};
#if defined(SWIGCSHARP) || defined (SWIGJAVA)
// place a class with the same name as in Outer in global scope, to test language symbol table
class InnerSameName {};
class InnerSameName2 {};
#endif
%}
// Ignore nested struct instance

View file

@ -30,6 +30,7 @@ namespace ns {
%}
%template(T_NormalTemplateNormalClass) ns::NormalTemplate<ns::NormalClass>;
%template(T_NormalTemplateInt) ns::NormalTemplate<int>;
%template(T_NormalTemplateDouble) ns::NormalTemplate<double>;
%inline %{
namespace ns {
@ -70,6 +71,9 @@ namespace ns {
};
Inner2<int> useInner2(const Inner2<int>& inner) { return inner; }
Inner2<NormalClass> useInner2Again(const Inner2<NormalClass>& inner) { return inner; }
#ifdef SWIG
%template(T_OuterClassInner1Double) Inner1<double>;
#endif
int iii;
};
struct ABC {
@ -105,8 +109,10 @@ namespace ns {
NestedStruct useNestedStruct(const NestedStruct& inner) { return inner; }
};
}
%}
%extend ns::OuterClass {
%template(T_OuterClassInner2Double) Inner2<double>;
}
%template(T_OuterTMethodNormalClass) ns::OuterClass::InnerTMethod<ns::NormalClass>;
%template(T_TemplateFuncs1Int) ns::TemplateFuncs::templateMethod1<int>;