PageRenderTime 34ms CodeModel.GetById 10ms RepoModel.GetById 1ms app.codeStats 0ms

/tags/rel-1-3-29/SWIG/Examples/test-suite/python/vector.i

#
Swig | 51 lines | 45 code | 6 blank | 0 comment | 0 complexity | f047874d6640cb96e65ef4da5e962ff9 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. %module vector
  2. %{
  3. #include <vector>
  4. %}
  5. %define SWIG_STD_VECTOR_MINIMUM(CSTYPE, CTYPE...)
  6. public:
  7. typedef size_t size_type;
  8. typedef CTYPE value_type;
  9. size_type size() const;
  10. vector();
  11. %extend {
  12. static std::vector<CTYPE > *Repeat(const value_type& value, int count) /*throw (std::out_of_range)*/ {
  13. // if (count < 0)
  14. // throw std::out_of_range("count");
  15. return new std::vector<CTYPE >(count, value);
  16. }
  17. }
  18. %enddef
  19. namespace std {
  20. // primary (unspecialized) class template for std::vector
  21. // does not require operator== to be defined
  22. template<class T> class vector {
  23. SWIG_STD_VECTOR_MINIMUM(T, T)
  24. };
  25. }
  26. %define SWIG_STD_VECTOR_SPECIALIZE(CSTYPE, CTYPE...)
  27. namespace std {
  28. template<> class vector<CTYPE > {
  29. SWIG_STD_VECTOR_MINIMUM(CSTYPE, CTYPE)
  30. };
  31. }
  32. %enddef
  33. SWIG_STD_VECTOR_SPECIALIZE(float, float)
  34. %inline %{
  35. typedef float Real;
  36. %}
  37. #if 1
  38. //fails
  39. namespace std {
  40. %template(RealVector) vector<Real>;
  41. }
  42. #else
  43. //works
  44. %template(RealVector) std::vector<Real>;
  45. #endif