Refactor std_container iterator functions
This is for future improvements in the C++11 unordered containers which
do not have reverse iterators.
diff --git a/Lib/std/std_container.i b/Lib/std/std_container.i
index 5fa085a..000163f 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;