| %include <std_common.i> | |
| %include <std_alloc.i> | |
| %{ | |
| #include <algorithm> | |
| %} | |
| // Common non-resizable container methods | |
| %define %std_container_methods_non_resizable(container...) | |
| container(); | |
| container(const container& other); | |
| bool empty() const; | |
| size_type size() const; | |
| void swap(container& v); | |
| %enddef | |
| %define %std_container_methods_forward_iterators(container...) | |
| #ifdef SWIG_EXPORT_ITERATOR_METHODS | |
| class iterator; | |
| class const_iterator; | |
| iterator begin(); | |
| iterator end(); | |
| #endif | |
| %enddef | |
| %define %std_container_methods_reverse_iterators(container...) | |
| #ifdef SWIG_EXPORT_ITERATOR_METHODS | |
| class reverse_iterator; | |
| class const_reverse_iterator; | |
| reverse_iterator rbegin(); | |
| reverse_iterator rend(); | |
| #endif | |
| %enddef | |
| // Common container methods | |
| %define %std_container_methods(container...) | |
| %std_container_methods_non_resizable(%arg(container)) | |
| %std_container_methods_forward_iterators(%arg(container)) | |
| %std_container_methods_reverse_iterators(%arg(container)) | |
| void clear(); | |
| allocator_type get_allocator() const; | |
| %enddef | |
| %define %std_container_methods_without_reverse_iterators(container...) | |
| %std_container_methods_non_resizable(%arg(container)) | |
| %std_container_methods_forward_iterators(%arg(container)) | |
| void clear(); | |
| allocator_type get_allocator() const; | |
| %enddef | |
| // Common sequence | |
| %define %std_sequence_methods_common(sequence) | |
| %std_container_methods(%arg(sequence)); | |
| sequence(size_type size); | |
| void pop_back(); | |
| void resize(size_type new_size); | |
| #ifdef SWIG_EXPORT_ITERATOR_METHODS | |
| %extend { | |
| // %extend wrapper used for differing definitions of these methods introduced in C++11 | |
| iterator erase(iterator pos) { return $self->erase(pos); } | |
| iterator erase(iterator first, iterator last) { return $self->erase(first, last); } | |
| } | |
| #endif | |
| %enddef | |
| %define %std_sequence_methods_non_resizable(sequence) | |
| %std_container_methods_non_resizable(%arg(sequence)) | |
| %std_container_methods_forward_iterators(%arg(container)) | |
| %std_container_methods_reverse_iterators(%arg(container)) | |
| const value_type& front() const; | |
| const value_type& back() const; | |
| %enddef | |
| %define %std_sequence_methods(sequence) | |
| %std_sequence_methods_common(%arg(sequence)); | |
| sequence(size_type size, const value_type& value); | |
| void push_back(const value_type& x); | |
| const value_type& front() const; | |
| const value_type& back() const; | |
| void assign(size_type n, const value_type& x); | |
| void resize(size_type new_size, const value_type& x); | |
| #ifdef SWIG_EXPORT_ITERATOR_METHODS | |
| %extend { | |
| // %extend wrapper used for differing definitions of these methods introduced in C++11 | |
| iterator insert(iterator pos, const value_type& x) { return $self->insert(pos, x); } | |
| void insert(iterator pos, size_type n, const value_type& x) { $self->insert(pos, n, x); } | |
| } | |
| #endif | |
| %enddef | |
| %define %std_sequence_methods_non_resizable_val(sequence...) | |
| %std_container_methods_non_resizable(%arg(sequence)) | |
| %std_container_methods_forward_iterators(%arg(container)) | |
| %std_container_methods_reverse_iterators(%arg(container)) | |
| value_type front() const; | |
| value_type back() const; | |
| #endif | |
| %enddef | |
| %define %std_sequence_methods_val(sequence...) | |
| %std_sequence_methods_common(%arg(sequence)); | |
| sequence(size_type size, value_type value); | |
| void push_back(value_type x); | |
| value_type front() const; | |
| value_type back() const; | |
| void assign(size_type n, value_type x); | |
| void resize(size_type new_size, value_type x); | |
| #ifdef SWIG_EXPORT_ITERATOR_METHODS | |
| %extend { | |
| // %extend wrapper used for differing definitions of these methods introduced in C++11 | |
| iterator insert(iterator pos, value_type x) { return $self->insert(pos, x); } | |
| void insert(iterator pos, size_type n, value_type x) { $self->insert(pos, n, x); } | |
| } | |
| #endif | |
| %enddef | |
| // | |
| // Ignore member methods for Type with no default constructor | |
| // | |
| %define %std_nodefconst_type(Type...) | |
| %feature("ignore") std::vector< Type >::vector(size_type size); | |
| %feature("ignore") std::vector< Type >::resize(size_type size); | |
| %feature("ignore") std::deque< Type >::deque(size_type size); | |
| %feature("ignore") std::deque< Type >::resize(size_type size); | |
| %feature("ignore") std::list< Type >::list(size_type size); | |
| %feature("ignore") std::list< Type >::resize(size_type size); | |
| %enddef |