dwww Home | Show directory contents | Find package

%module template_using_directive_typedef

%inline %{
namespace space {
  template<typename T> class Vector {};
  class VectorClass {};
}
struct Obj {};
%}

%template(Vector_Obj) space::Vector<Obj>;

%inline %{
namespace tns {
  using space::Vector; // template using directives were not being added into the typedef table
  using space::VectorClass;
  typedef Vector<Obj> NSVec;
}
%}

%inline %{
namespace tns {
  struct Holder {
//      using Vec = Vector<Obj>;
    typedef Vector<Obj> Vec;
    typedef VectorClass VecClass;
        Vec items;
    void holder_use1(space::Vector<Obj>, tns::NSVec, tns::Vector<Obj>) {}
    void holder_use2(space::Vector<Obj>, NSVec, Vector<Obj>) {}
    void holder_use3(tns::Holder::Vec, Holder::Vec, Vec) {}
  };
  void tns_holder_use(tns::Holder::Vec, Holder::Vec) {}
  void tns_use(space::Vector<Obj>, NSVec, tns::NSVec) {}
}
void global_holder_use(tns::Holder::Vec) {}
void global_use(space::Vector<Obj>, tns::NSVec, tns::Vector<Obj>) {}
namespace ns1 {
  void ns1_holder_use(tns::Holder::Vec) {}
}
namespace ns2 {
  using namespace tns;
  void ns2_holder_use(tns::Holder::Vec, Holder::Vec, NSVec, Vector<Obj>) {}
}
%}

Generated by dwww version 1.15 on Tue Jul 2 00:40:44 CEST 2024.