%module template_opaque
%include "std_vector.i"

%{
  namespace A 
  {
    struct OpaqueStruct 
    {
      int x;
    };
  }

  enum Hello { hi, hello };
      
%}


%inline {
namespace A {
  struct OpaqueStruct;
  typedef struct OpaqueStruct OpaqueType;
  typedef enum Hello Hi;
  typedef std::vector<OpaqueType> OpaqueVectorType;
  typedef std::vector<Hi> OpaqueVectorEnum;
  
  void FillVector(OpaqueVectorType& v) 
  {
    for (size_t i = 0; i < v.size(); ++i) {
      v[i] = OpaqueStruct();
    }
  }

  void FillVector(const OpaqueVectorEnum& v) 
  {
  }
}
}

%template(OpaqueVectorType) std::vector<A::OpaqueType>; 
