1555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//
2555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot// std::deque
3555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
4555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%include <std_container.i>
5555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
6555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot// Deque
7555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
8555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%define %std_deque_methods(deque...)
9555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  %std_sequence_methods(deque)
10555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
11555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  void pop_front();
12555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  void push_front(const value_type& x);
13555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%enddef
14555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
15555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%define %std_deque_methods_val(deque...)
16555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  %std_sequence_methods_val(deque)
17555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
18555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  void pop_front();
19555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  void push_front(value_type x);
20555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%enddef
21555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
22555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot// ------------------------------------------------------------------------
23555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot// std::deque
24555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//
25555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot// const declarations are used to guess the intent of the function being
26555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot// exported; therefore, the following rationale is applied:
27555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//
28555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//   -- f(std::deque<T>), f(const std::deque<T>&):
29555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//      the parameter being read-only, either a sequence or a
30555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//      previously wrapped std::deque<T> can be passed.
31555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//   -- f(std::deque<T>&), f(std::deque<T>*):
32555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//      the parameter may be modified; therefore, only a wrapped std::deque
33555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//      can be passed.
34555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//   -- std::deque<T> f(), const std::deque<T>& f():
35555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//      the deque is returned by copy; therefore, a sequence of T:s
36555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//      is returned which is most easily used in other functions
37555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//   -- std::deque<T>& f(), std::deque<T>* f():
38555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//      the deque is returned by reference; therefore, a wrapped std::deque
39555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//      is returned
40555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//   -- const std::deque<T>* f(), f(const std::deque<T>*):
41555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot//      for consistency, they expect and return a plain deque pointer.
42555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot// ------------------------------------------------------------------------
43555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
44555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%{
45555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#include <deque>
46555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%}
47555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
48555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot// exported classes
49555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
50555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotnamespace std {
51555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
52555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  template<class _Tp, class _Alloc = allocator<_Tp> >
53555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  class deque {
54555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  public:
55555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef size_t size_type;
56555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef ptrdiff_t difference_type;
57555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef _Tp value_type;
58555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef value_type* pointer;
59555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef const value_type* const_pointer;
60555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef value_type& reference;
61555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef const value_type& const_reference;
62555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef _Alloc allocator_type;
63555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
64555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %traits_swigtype(_Tp);
65555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
66555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %fragment(SWIG_Traits_frag(std::deque<_Tp, _Alloc >), "header",
67555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	      fragment=SWIG_Traits_frag(_Tp),
68555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	      fragment="StdDequeTraits") {
69555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot      namespace swig {
70555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	template <>  struct traits<std::deque<_Tp, _Alloc > > {
71555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  typedef pointer_category category;
72555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  static const char* type_name() {
73555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	    return "std::deque<" #_Tp " >";
74555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  }
75555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	};
76555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot      }
77555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    }
78555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
79555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %typemap_traits_ptr(SWIG_TYPECHECK_DEQUE, std::deque<_Tp, _Alloc >);
80555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
81555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#ifdef %swig_deque_methods
82555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    // Add swig/language extra methods
83555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %swig_deque_methods(std::deque<_Tp, _Alloc >);
84555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#endif
85555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
86555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %std_deque_methods(deque);
87555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  };
88555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
89555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  template<class _Tp, class _Alloc >
90555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  class deque<_Tp*, _Alloc > {
91555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  public:
92555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef size_t size_type;
93555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef ptrdiff_t difference_type;
94555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef _Tp* value_type;
95555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef value_type* pointer;
96555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef const value_type* const_pointer;
97555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef value_type reference;
98555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef value_type const_reference;
99555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef _Alloc allocator_type;
100555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
101555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %traits_swigtype(_Tp);
102555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
103555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %fragment(SWIG_Traits_frag(std::deque<_Tp*, _Alloc >), "header",
104555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	      fragment=SWIG_Traits_frag(_Tp),
105555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	      fragment="StdDequeTraits") {
106555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot      namespace swig {
107555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	template <>  struct traits<std::deque<_Tp*, _Alloc > > {
108555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  typedef value_category category;
109555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  static const char* type_name() {
110555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	    return "std::deque<" #_Tp " * >";
111555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  }
112555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	};
113555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot      }
114555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    }
115555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
116555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %typemap_traits_ptr(SWIG_TYPECHECK_DEQUE, std::deque<_Tp*, _Alloc >);
117555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
118555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#ifdef %swig_deque_methods_val
119555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    // Add swig/language extra methods
120555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %swig_deque_methods_val(std::deque<_Tp*, _Alloc >);
121555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#endif
122555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
123555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %std_deque_methods_val(std::deque<_Tp*, _Alloc >);
124555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  };
125555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
126555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot}
127555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
128