1555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot/* ----------------------------------------------------------------------------- 2555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * std_list.i 3555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * 4555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * SWIG typemaps for std::list types 5555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * 6555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * To use, add: 7555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * 8555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * %include "std_list.i" 9555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * 10555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * to your interface file. You will also need to include a template directive 11555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * for each instance of the list container you want to use in your application. 12555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * e.g. 13555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * 14555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * %template (intlist) std::list<int>; 15555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * %template (floatlist) std::list<float>; 16555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot * ----------------------------------------------------------------------------- */ 17555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 18555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%module std_list 19555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%warnfilter(468) std::list; 20555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 21555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%{ 22555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#include <list> 23555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#include <stdexcept> 24555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%} 25555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 26555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 27555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotnamespace std{ 28555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot template<class T> class list 29555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 30555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot public: 31555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 32555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot typedef T &reference; 33555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot typedef const T& const_reference; 34555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot typedef T &iterator; 35555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot typedef const T& const_iterator; 36555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 37555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot list(); 38555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot list(unsigned int size, const T& value = T()); 39555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot list(const list<T> &); 40555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 41555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot ~list(); 42555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void assign(unsigned int n, const T& value); 43555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void swap(list<T> &x); 44555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 45555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot const_reference front(); 46555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot const_reference back(); 47555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot const_iterator begin(); 48555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot const_iterator end(); 49555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 50555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void resize(unsigned int n, T c = T()); 51555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot bool empty() const; 52555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 53555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void push_front(const T& INPUT); 54555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void push_back(const T& INPUT); 55555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 56555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 57555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void pop_front(); 58555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void pop_back(); 59555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void clear(); 60555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot unsigned int size() const; 61555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot unsigned int max_size() const; 62555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void resize(unsigned int n, const T& INPUT); 63555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 64555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void remove(const T& INPUT); 65555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void unique(); 66555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void reverse(); 67555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void sort(); 68555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 69555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot %extend 70555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 71555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot %typemap(lout) T &__getitem__ "(cl::setq ACL_ffresult (ff:fslot-value-typed '$*out_fftype :c $body))"; 72555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot %typemap(lout) T *__getitem__ "(cl::setq ACL_ffresult (make-instance '$lclass :foreign-address $body))"; 73555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 74555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot const_reference __getitem__(int i) throw (std::out_of_range) 75555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 76555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot std::list<T>::iterator first = self->begin(); 77555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot int size = int(self->size()); 78555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (i<0) i += size; 79555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (i>=0 && i<size) 80555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 81555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot for (int k=0;k<i;k++) 82555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 83555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot first++; 84555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 85555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot return *first; 86555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 87555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot else throw std::out_of_range("list index out of range"); 88555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 89555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void __setitem__(int i, const T& INPUT) throw (std::out_of_range) 90555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 91555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot std::list<T>::iterator first = self->begin(); 92555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot int size = int(self->size()); 93555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (i<0) i += size; 94555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (i>=0 && i<size) 95555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 96555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot for (int k=0;k<i;k++) 97555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 98555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot first++; 99555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 100555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot *first = INPUT; 101555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 102555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot else throw std::out_of_range("list index out of range"); 103555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 104555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void __delitem__(int i) throw (std::out_of_range) 105555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 106555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot std::list<T>::iterator first = self->begin(); 107555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot int size = int(self->size()); 108555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (i<0) i += size; 109555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (i>=0 && i<size) 110555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 111555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot for (int k=0;k<i;k++) 112555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 113555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot first++; 114555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 115555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot self->erase(first); 116555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 117555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot else throw std::out_of_range("list index out of range"); 118555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 119555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot std::list<T> __getslice__(int i,int j) 120555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 121555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot std::list<T>::iterator first = self->begin(); 122555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot std::list<T>::iterator end = self->end(); 123555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 124555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot int size = int(self->size()); 125555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (i<0) i += size; 126555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (j<0) j += size; 127555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (i<0) i = 0; 128555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (j>size) j = size; 129555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (i>=j) i=j; 130555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (i>=0 && i<size && j>=0) 131555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 132555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot for (int k=0;k<i;k++) 133555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 134555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot first++; 135555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 136555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot for (int m=0;m<j;m++) 137555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 138555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot end++; 139555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 140555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot std::list<T> tmp(j-i); 141555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (j>i) std::copy(first,end,tmp.begin()); 142555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot return tmp; 143555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 144555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot else throw std::out_of_range("list index out of range"); 145555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 146555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void __delslice__(int i,int j) 147555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 148555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot std::list<T>::iterator first = self->begin(); 149555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot std::list<T>::iterator end = self->end(); 150555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 151555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot int size = int(self->size()); 152555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (i<0) i += size; 153555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (j<0) j += size; 154555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (i<0) i = 0; 155555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (j>size) j = size; 156555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 157555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot for (int k=0;k<i;k++) 158555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 159555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot first++; 160555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 161555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot for (int m=0;m<=j;m++) 162555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 163555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot end++; 164555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 165555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot self->erase(first,end); 166555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 167555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void __setslice__(int i,int j, const std::list<T>& v) 168555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 169555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot std::list<T>::iterator first = self->begin(); 170555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot std::list<T>::iterator end = self->end(); 171555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 172555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot int size = int(self->size()); 173555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (i<0) i += size; 174555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (j<0) j += size; 175555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (i<0) i = 0; 176555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (j>size) j = size; 177555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 178555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot for (int k=0;k<i;k++) 179555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 180555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot first++; 181555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 182555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot for (int m=0;m<=j;m++) 183555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 184555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot end++; 185555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 186555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (int(v.size()) == j-i) 187555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 188555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot std::copy(v.begin(),v.end(),first); 189555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 190555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot else { 191555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot self->erase(first,end); 192555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot if (i+1 <= int(self->size())) 193555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 194555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot first = self->begin(); 195555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot for (int k=0;k<i;k++) 196555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 197555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot first++; 198555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 199555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot self->insert(first,v.begin(),v.end()); 200555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 201555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot else self->insert(self->end(),v.begin(),v.end()); 202555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 203555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 204555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 205555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot unsigned int __len__() 206555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 207555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot return self->size(); 208555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 209555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot bool __nonzero__() 210555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 211555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot return !(self->empty()); 212555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 213555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void append(const T& INPUT) 214555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 215555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot self->push_back(INPUT); 216555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 217555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot void pop() 218555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot { 219555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot self->pop_back(); 220555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot } 221555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 222555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot }; 223555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot }; 224555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot} 225555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 226555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 227555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 228555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 229555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 230555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot 231