%include %include %include %{ #include %} // 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