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