From 65689af8486184560754f3e7fe8a4a702ad43802 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Fri, 27 Jan 2017 18:45:22 +0000 Subject: [PATCH] Refactor std_container iterator functions This is for future improvements in the C++11 unordered containers which do not have reverse iterators. --- Lib/std/std_container.i | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/Lib/std/std_container.i b/Lib/std/std_container.i index 5fa085afa..000163f1e 100644 --- a/Lib/std/std_container.i +++ b/Lib/std/std_container.i @@ -17,14 +17,24 @@ size_type size() const; void swap(container& v); +%enddef + +%define %std_container_methods_forward_iterators(container...) + #ifdef SWIG_EXPORT_ITERATOR_METHODS class iterator; - class reverse_iterator; class const_iterator; - class const_reverse_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 @@ -34,7 +44,20 @@ // 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; @@ -65,6 +88,8 @@ %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; @@ -97,6 +122,8 @@ %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;