How frustrating!
Here it is again, this time inline:
Index: /home/mbrown/stdcxx/include/map
===================================================================
--- /home/mbrown/stdcxx/include/map (revision 516799)
+++ /home/mbrown/stdcxx/include/map (working copy)
@@ -167,6 +167,10 @@
return _C_rep.begin ();
}
+ const_iterator cbegin () const {
+ return _C_rep.begin ();
+ }
+
iterator end () {
return _C_rep.end ();
}
@@ -175,6 +179,10 @@
return _C_rep.end ();
}
+ const_iterator cend () const {
+ return _C_rep.end ();
+ }
+
reverse_iterator rbegin () {
return _C_rep.rbegin ();
}
@@ -183,6 +191,10 @@
return _C_rep.rbegin ();
}
+ const_reverse_iterator crbegin () const {
+ return _C_rep.rbegin ();
+ }
+
reverse_iterator rend () {
return _C_rep.rend ();
}
@@ -191,6 +203,10 @@
return _C_rep.rend ();
}
+ const_reverse_iterator crend () const {
+ return _C_rep.rend ();
+ }
+
bool empty () const {
return _C_rep.empty ();
}
Index: /home/mbrown/stdcxx/include/set
===================================================================
--- /home/mbrown/stdcxx/include/set (revision 516799)
+++ /home/mbrown/stdcxx/include/set (working copy)
@@ -160,12 +160,16 @@
//
iterator begin () { return _C_rep.begin (); }
const_iterator begin () const { return _C_rep.begin (); }
+ const_iterator cbegin () const { return _C_rep.begin (); }
iterator end () { return _C_rep.end (); }
const_iterator end () const { return _C_rep.end (); }
+ const_iterator cend () const { return _C_rep.end (); }
reverse_iterator rbegin () { return _C_rep.rbegin (); }
const_reverse_iterator rbegin () const { return _C_rep.rbegin (); }
+ const_reverse_iterator crbegin() const { return _C_rep.rbegin (); }
reverse_iterator rend () { return _C_rep.rend (); }
const_reverse_iterator rend () const { return _C_rep.rend (); }
+ const_reverse_iterator crend () const { return _C_rep.rend (); }
//
// capacity
Index: /home/mbrown/stdcxx/include/string
===================================================================
--- /home/mbrown/stdcxx/include/string (revision 516799)
+++ /home/mbrown/stdcxx/include/string (working copy)
@@ -214,6 +214,10 @@
return _C_make_iter (_C_data);
}
+ const_iterator cbegin () const {
+ return _C_make_iter (_C_data);
+ }
+
iterator end () {
// disable reference counting
return begin () + size ();
@@ -223,6 +227,10 @@
return _C_make_iter (_C_data + size ());
}
+ const_iterator cend () const {
+ return _C_make_iter (_C_data + size ());
+ }
+
reverse_iterator rbegin () {
return reverse_iterator (end ());
}
@@ -231,6 +239,10 @@
return const_reverse_iterator (end ());
}
+ const_reverse_iterator crbegin () const {
+ return const_reverse_iterator (end ());
+ }
+
reverse_iterator rend () {
return reverse_iterator (begin ());
}
@@ -239,6 +251,10 @@
return const_reverse_iterator (begin ());
}
+ const_reverse_iterator crend () const {
+ return const_reverse_iterator (begin ());
+ }
+
size_type size () const {
return _C_pref ()->size ();
}
Index: /home/mbrown/stdcxx/include/vector
===================================================================
--- /home/mbrown/stdcxx/include/vector (revision 516799)
+++ /home/mbrown/stdcxx/include/vector (working copy)
@@ -259,6 +259,10 @@
return _C_make_iter (_C_begin);
}
+ const_iterator cbegin () const {
+ return _C_make_iter (_C_begin);
+ }
+
iterator end () {
return _C_make_iter (_C_end);
}
@@ -267,6 +271,10 @@
return _C_make_iter (_C_end);
}
+ const_iterator cend () const {
+ return _C_make_iter (_C_end);
+ }
+
reverse_iterator rbegin () {
return reverse_iterator (end ());
}
@@ -275,6 +283,10 @@
return const_reverse_iterator (end ());
}
+ const_reverse_iterator crbegin () const {
+ return const_reverse_iterator (end ());
+ }
+
reverse_iterator rend () {
return reverse_iterator (begin ());
}
@@ -283,6 +295,10 @@
return const_reverse_iterator (begin ());
}
+ const_reverse_iterator crend () const {
+ return const_reverse_iterator (begin ());
+ }
+
size_type size () const {
return size_type (_C_end - _C_begin);
}
@@ -1279,23 +1295,45 @@
// iterators
//
iterator begin () { return _C_begin; }
- const_iterator begin () const
- { return const_iterator(_C_begin._C_p,_C_begin._C_offset); }
+
+ const_iterator begin () const {
+ return const_iterator (_C_begin._C_p, _C_begin._C_offset);
+ }
+
+ const_iterator cbegin () const {
+ return const_iterator (_C_begin._C_p, _C_begin._C_offset);
+ }
+
iterator end () { return _C_end; }
- const_iterator end () const
- { return const_iterator(_C_end._C_p,_C_end._C_offset); }
+ const_iterator end () const {
+ return const_iterator(_C_end._C_p,_C_end._C_offset);
+ }
+
+ const_iterator cend () const {
+ return const_iterator (_C_end._C_p, _C_end._C_offset);
+ }
+
reverse_iterator rbegin () { return reverse_iterator(end()); }
const_reverse_iterator rbegin () const
{
return const_reverse_iterator(end());
}
+
+ const_reverse_iterator crbegin () const {
+ return const_reverse_iterator(end());
+ }
+
reverse_iterator rend () { return reverse_iterator(begin()); }
const_reverse_iterator rend () const
{
return const_reverse_iterator(begin());
}
+ const_reverse_iterator crend () const {
+ return const_reverse_iterator(begin());
+ }
+
//
// capacity
//
Index: /home/mbrown/stdcxx/include/deque
===================================================================
--- /home/mbrown/stdcxx/include/deque (revision 516799)
+++ /home/mbrown/stdcxx/include/deque (working copy)
@@ -516,6 +516,10 @@
return _C_make_iter (_C_beg);
}
+ const_iterator cbegin () const {
+ return _C_make_iter (_C_beg);
+ }
+
iterator end () {
return _C_make_iter (_C_end);
}
@@ -524,6 +528,10 @@
return _C_make_iter (_C_end);
}
+ const_iterator cend () const {
+ return _C_make_iter (_C_end);
+ }
+
reverse_iterator rbegin () {
return reverse_iterator (end ());
}
@@ -532,6 +540,10 @@
return const_reverse_iterator (end ());
}
+ const_reverse_iterator crbegin () const {
+ return const_reverse_iterator (end ());
+ }
+
reverse_iterator rend () {
return reverse_iterator (begin ());
}
@@ -540,6 +552,10 @@
return const_reverse_iterator (begin ());
}
+ const_reverse_iterator crend () const {
+ return const_reverse_iterator (begin ());
+ }
+
bool empty () const {
return _C_beg._C_node == _C_end._C_node
&& _C_beg._C_cur == _C_end._C_cur;
Index: /home/mbrown/stdcxx/include/list
===================================================================
--- /home/mbrown/stdcxx/include/list (revision 516799)
+++ /home/mbrown/stdcxx/include/list (working copy)
@@ -504,6 +504,10 @@
return _C_make_iter ((*_C_node)._C_next);
}
+ const_iterator cbegin () const {
+ return _C_make_iter ((*_C_node)._C_next);
+ }
+
iterator end () {
return _C_make_iter (_C_node);
}
@@ -512,6 +516,10 @@
return _C_make_iter (_C_node);
}
+ const_iterator cend () const {
+ return _C_make_iter (_C_node);
+ }
+
reverse_iterator rbegin () {
return reverse_iterator (end ());
}
@@ -520,6 +528,10 @@
return const_reverse_iterator (end ());
}
+ const_reverse_iterator crbegin () const {
+ return const_reverse_iterator (end ());
+ }
+
reverse_iterator rend () {
return reverse_iterator (begin ());
}
@@ -528,6 +540,10 @@
return const_reverse_iterator (begin ());
}
+ const_reverse_iterator crend () const {
+ return const_reverse_iterator (begin ());
+ }
+
bool empty () const {
return 0 == size ();
}
-- Mark
> -----Original Message-----
> From: [EMAIL PROTECTED]
> Sent: Tue, 13 Mar 2007 10:33:40 -0600
> To: [email protected]
> Subject: Re: [PATCH] Re: new container member functions cbegin() and
> cend()
>
> Mark Brown wrote:
>> Attached is my first attempt at a patch implementing these functions.
>> Please let me know if I've missed something. The ChangeLong entry is
>> here:
>
> Sorry Mark but the patch got stripped again.
>
> Martin
>
>>
>> 2007-03-13 Mark Brown <[EMAIL PROTECTED]>
>>
>> STDCXX-335
>> * map (cbegin, cend, crbegin, crend): Implemented new accessor
>> functions.
>> * set: Same.
>> * string: Same.
>> * vector: Same.
>> * deque: Same.
>> * list: Same.
>>
>> -- Mark
>>
>>> -----Original Message-----
>>> From: [EMAIL PROTECTED]
>>> Sent: Sat, 10 Mar 2007 10:12:09 -0800
>>> To: [email protected], [email protected]
>>> Subject: Re: new container member functions cbegin() and cend()
>>>
>>>> -----Original Message-----
>>>> From: [EMAIL PROTECTED]
>>>> Sent: Fri, 09 Mar 2007 13:44:49 -0700
>>>> To: [email protected]
>>>> Subject: Re: new container member functions cbegin() and cend()
>>>>
>>>> Mark Brown wrote:
>>>>> The next C++ standard adds a couple of new container member
>>>>> functions,
>>>>> cbegin() and cend(), that will make it easier to retrieve const
>>>>> iterators from non-const container objects. Are there any plans to
>>>>> add
>>>>> these functions to stdcxx?
>>>> I assume you're referring to the Working Draft of the Standard for
>>>> Programming Language C++:
>>>> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2134.pdf
>>>>
>>>> and the functions are those proposed in Walter Brown's Proposal
>>>> to Improve const_iterator Use from C++0X:
>>>> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1674.pdf
>>> Yes, the functions from Alternative 1 are the ones I was referring
>>> to. They will become especially handy when the "auto" feature is
>>> available in compilers. Does anyone know of a compiler that
>>> supports this use of auto?
>>>
>>>> I have no immediate plans to implement these functions but we
>>>> certainly expect and plan to implement the new C++ standard by
>>>> the time it comes out.
>>>>
>>>> If you would like to submit a patch with these functions or any
>>>> other feature that's expected to be in the next standard you
>>>> are most welcome to do so. Small extensions like this one might
>>>> be okay for trunk. Bigger features will probably be more
>>>> appropriate for a yet-to-be created branch as suggested in
>>>> STDCXX-299: https://issues.apache.org/jira/browse/STDCXX-299
>>> I will work on a patch.
>>>
>>> -- Mark
>>>
>>>> Martin
>>>>
>>>>> -- Mark
____________________________________________________________
GET FREE 5GB ONLINE STORAGE - Safely store your documents, photos and music
online!
Visit http://www.inbox.com/storage to find out more!