File: vector.i

package info (click to toggle)
swig1.3 1.3.36-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 27,060 kB
  • ctags: 13,774
  • sloc: cpp: 40,816; ansic: 27,565; python: 9,069; java: 6,432; makefile: 5,065; yacc: 4,916; cs: 4,551; sh: 4,071; ruby: 3,760; perl: 3,562; lisp: 1,993; tcl: 1,266; php: 1,026; ml: 708
file content (51 lines) | stat: -rw-r--r-- 1,049 bytes parent folder | download | duplicates (2)
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
%module vector
%{
#include <vector>
%}

%define SWIG_STD_VECTOR_MINIMUM(CSTYPE, CTYPE...)
  public:
    typedef size_t size_type;
    typedef CTYPE value_type;
    size_type size() const;
    vector();
    %extend {
      static std::vector<CTYPE > *Repeat(const value_type& value, int count) /*throw (std::out_of_range)*/ {
//        if (count < 0)
//          throw std::out_of_range("count");
        return new std::vector<CTYPE >(count, value);
      }
    }
%enddef

namespace std {
  // primary (unspecialized) class template for std::vector
  // does not require operator== to be defined
  template<class T> class vector {
    SWIG_STD_VECTOR_MINIMUM(T, T)
  };
}

%define SWIG_STD_VECTOR_SPECIALIZE(CSTYPE, CTYPE...)
namespace std {
  template<> class vector<CTYPE > {
    SWIG_STD_VECTOR_MINIMUM(CSTYPE, CTYPE)
  };
}
%enddef

SWIG_STD_VECTOR_SPECIALIZE(float, float)

%inline %{
typedef float Real;
%}

#if 1
//fails
namespace std {
    %template(RealVector) vector<Real>;
}
#else
//works
%template(RealVector) std::vector<Real>;
#endif