On Thu, Jan 29, 2015 at 2:59 AM, Ehsan Akhgari <ehsan.akhg...@gmail.com>
wrote:

> On 2015-01-27 9:24 PM, Xidorn Quan wrote:
>
>> I asked a question in #developers that what is the best way to reversely
>> iterating nsTArray, and there are some suggestions:
>>
>> <tbsaunde> uint32_t count = array.Length(); for (uint32_t i = length - 1;
>> i
>> < length; i--)
>> <smaug> iterate from length() to 1 and index using i - 1
>> <jcranmer> for (uint32_t i = array.Length(); i-- > 0; ) { }
>>
>> tbsaunde's method should work fine, but not intuitive. smaug's looks fine
>> to me, but could cause some problem if I use i instead of i-1 by mistake.
>> jcranmer's... I don't think it is a good idea, anyway. None of them looks
>> prefect to me.
>>
>>
>> As we have supported range-based for loop in our code, I purpose that we
>> have something like ReverseIntegerRange, and use this with range-based
>> loop
>> to iterate the index. So we can use, for example: for (auto i :
>> ReverseIntegerRange(array.Length()))
>>
>> Maybe we can also add IntegerRange to benefit from the integer type
>> dedution.
>>
>> How does it sound?
>>
>
> No, please don't do this.  We need to make our container classes more
> similar to the STL containers, not less, and since this is about adding new
> functionality, here is what we need to do:
>
> * Add a begin() and end() function to nsTArray that return iterators with
> STL semantics.
> * Add a rbegin() and rend() function to nsTArray with similar semantics
> which return a reverse iterator.
> * Add something similar to boost::adaptors::reverse, probably to MFBT.
>

That's exactly what I want to do :)

And we still need a Range class for iterating integer.

- Xidorn
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to