diff options
Diffstat (limited to 'Lib/allegrocl/std_list.i')
-rw-r--r-- | Lib/allegrocl/std_list.i | 230 |
1 files changed, 0 insertions, 230 deletions
diff --git a/Lib/allegrocl/std_list.i b/Lib/allegrocl/std_list.i deleted file mode 100644 index a3660c9f7..000000000 --- a/Lib/allegrocl/std_list.i +++ /dev/null @@ -1,230 +0,0 @@ -/* ----------------------------------------------------------------------------- - * std_list.i - * - * SWIG typemaps for std::list types - * - * To use, add: - * - * %include "std_list.i" - * - * to your interface file. You will also need to include a template directive - * for each instance of the list container you want to use in your application. - * e.g. - * - * %template (intlist) std::list<int>; - * %template (floatlist) std::list<float>; - * ----------------------------------------------------------------------------- */ - -%module std_list -%warnfilter(468) std::list; - -%{ -#include <list> -#include <stdexcept> -%} - - -namespace std{ - template<class T> class list - { - public: - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef T value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef T &iterator; - typedef const T& const_iterator; - - list(); - list(unsigned int size, const T& value = T()); - list(const list& other); - - void assign(unsigned int n, const T& value); - void swap(list<T> &x); - - const_reference front(); - const_reference back(); - const_iterator begin(); - const_iterator end(); - - void resize(unsigned int n, T c = T()); - bool empty() const; - - void push_front(const T& INPUT); - void push_back(const T& INPUT); - - void pop_front(); - void pop_back(); - void clear(); - unsigned int size() const; - unsigned int max_size() const; - void resize(unsigned int n, const T& INPUT); - - void remove(const T& INPUT); - void unique(); - void reverse(); - void sort(); - - %extend - { - %typemap(lout) T &__getitem__ "(cl::setq ACL_ffresult (ff:fslot-value-typed '$*out_fftype :c $body))"; - %typemap(lout) T *__getitem__ "(cl::setq ACL_ffresult (make-instance '$lclass :foreign-address $body))"; - - const_reference __getitem__(int i) throw (std::out_of_range) - { - std::list<T>::iterator first = self->begin(); - int size = int(self->size()); - if (i<0) i += size; - if (i>=0 && i<size) - { - for (int k=0;k<i;k++) - { - first++; - } - return *first; - } - else throw std::out_of_range("list index out of range"); - } - void __setitem__(int i, const T& INPUT) throw (std::out_of_range) - { - std::list<T>::iterator first = self->begin(); - int size = int(self->size()); - if (i<0) i += size; - if (i>=0 && i<size) - { - for (int k=0;k<i;k++) - { - first++; - } - *first = INPUT; - } - else throw std::out_of_range("list index out of range"); - } - void __delitem__(int i) throw (std::out_of_range) - { - std::list<T>::iterator first = self->begin(); - int size = int(self->size()); - if (i<0) i += size; - if (i>=0 && i<size) - { - for (int k=0;k<i;k++) - { - first++; - } - self->erase(first); - } - else throw std::out_of_range("list index out of range"); - } - std::list<T> __getslice__(int i,int j) - { - std::list<T>::iterator first = self->begin(); - std::list<T>::iterator end = self->end(); - - int size = int(self->size()); - if (i<0) i += size; - if (j<0) j += size; - if (i<0) i = 0; - if (j>size) j = size; - if (i>=j) i=j; - if (i>=0 && i<size && j>=0) - { - for (int k=0;k<i;k++) - { - first++; - } - for (int m=0;m<j;m++) - { - end++; - } - std::list<T> tmp(j-i); - if (j>i) std::copy(first,end,tmp.begin()); - return tmp; - } - else throw std::out_of_range("list index out of range"); - } - void __delslice__(int i,int j) - { - std::list<T>::iterator first = self->begin(); - std::list<T>::iterator end = self->end(); - - int size = int(self->size()); - if (i<0) i += size; - if (j<0) j += size; - if (i<0) i = 0; - if (j>size) j = size; - - for (int k=0;k<i;k++) - { - first++; - } - for (int m=0;m<=j;m++) - { - end++; - } - self->erase(first,end); - } - void __setslice__(int i,int j, const std::list<T>& v) - { - std::list<T>::iterator first = self->begin(); - std::list<T>::iterator end = self->end(); - - int size = int(self->size()); - if (i<0) i += size; - if (j<0) j += size; - if (i<0) i = 0; - if (j>size) j = size; - - for (int k=0;k<i;k++) - { - first++; - } - for (int m=0;m<=j;m++) - { - end++; - } - if (int(v.size()) == j-i) - { - std::copy(v.begin(),v.end(),first); - } - else { - self->erase(first,end); - if (i+1 <= int(self->size())) - { - first = self->begin(); - for (int k=0;k<i;k++) - { - first++; - } - self->insert(first,v.begin(),v.end()); - } - else self->insert(self->end(),v.begin(),v.end()); - } - } - unsigned int __len__() - { - return self->size(); - } - bool __nonzero__() - { - return !(self->empty()); - } - void append(const T& INPUT) - { - self->push_back(INPUT); - } - void pop() - { - self->pop_back(); - } - } - }; -} - - - - - - |