1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
%module naturalvar_more
// The instantiation of a template using an enum in the template parameter was not picking up %naturalvar.
// These typemaps will be used if %naturalvar is not working
%typemap(out) T<Space::E> *te, T<Space::E> *const_te "_should_not_use_this_out_typemap_"
%typemap(varout) T<Space::E> *te, T<Space::E> *const_te "_should_not_use_this_varout_typemap_"
%typemap(out) Hidden *hidden "_should_not_use_this_out_typemap_"
%typemap(varout) Hidden *hidden "_should_not_use_this_varout_typemap_"
%naturalvar T<Space::E>;
%naturalvar Hidden;
%inline %{
template <typename X> struct T {};
struct K {};
struct Hidden;
namespace Ace {
int glob;
}
%}
%{
struct Hidden {};
namespace Ace {
template<typename> struct NoIdea {};
}
%}
%inline %{
namespace Space {
enum E { E1, E2, E3 };
}
%}
%template(TE) T<Space::E>;
%include <std_string.i>
%include <std_vector.i>
%template(VectorString) std::vector<std::string>;
%inline {
using namespace Space;
struct S {
T<E> te;
const T<E> const_te;
const std::vector<std::string>::value_type const_string_member; // check this resolves to std::string which has a naturalvar
std::vector<std::string>::value_type string_member; // check this resolves to std::string which has a naturalvar
Hidden hidden;
Ace::NoIdea<Hidden> noidea;
S() : const_te(), const_string_member("initial string value") {}
};
}
|