%module template_matrix
%{
#include <vector>

  struct pop 
  {
  };  

%}

%include "std_vector.i"


%inline {
namespace simuPOP
{
  struct POP
  {
  };  

  template<class _POP1, class _POP2 = POP>
  class Operator
  {
  };
}

}

%template(vectorop) std::vector< simuPOP::Operator<pop> >;



namespace simuPOP
{
  %template(baseOperator)        Operator<pop>;
}


#if 1

namespace std
{
%template(vectori)     vector<int>;
%template(matrixi)     vector< vector<int> >;
%template(cubei)       vector< vector< vector<int> > >;
}



%inline %{
std::vector<int>
passVector(const std::vector<int>& a)
{
  return a;
}

std::vector< std::vector<int> >
passMatrix(const  std::vector< std::vector<int> >& a)
{
  return a;
}

std::vector< std::vector< std::vector<int> > >
passCube(const  std::vector< std::vector< std::vector<int> > >& a)
{
  return a;
}

%}

#endif
