Boost logo

Boost :

Subject: Re: [boost] [range] irange is not very eloquent
From: vicente.botet (vicente.botet_at_[hidden])
Date: 2010-04-28 06:31:46


----- Original Message -----
From: "Neil Groves" <neil_at_[hidden]>
To: <boost_at_[hidden]>
Sent: Wednesday, April 28, 2010 9:48 AM
Subject: Re: [boost] [range] irange is not very eloquent

>
>> Hi Neil,
>> I know that irange is a function. This why I said "I will expect in this
>> section (Provided ranages) ranges and not functions".
>>
>>
> I'll add it to both sections. There is no harm in doing that.

Great.
 
>> You have not commented nothing related to the name.
>>
>>
> The name is irange. I normally prefer long names but it was a frequent
> review comment that my names were excessively long. Amusingly the make_
> prefix you suggested was the target for much negative commentary. The
> integer range is probably going to be frequently used and we will soon
> recognize it. Having to type integer_range is lengthy and upon reading can
> easily be mistaken for iterator_range.

Unfortunately I didn't spent enough time during the review. I really think "irange" is a bad name.
 
>> I'm afraid, but I don't find integer_range in iterator_range section.
>>
>>
> There isn't an integer_range and this is why you can't find the
> documentation! I think you are misreading the code or docs. It is exactly
> the ease of this misreading that is the reason the name is 'irange' and not
> 'iterator_range'.
 
Then you need to change the prototypes in the documentation See below [1] ***integer_range***

template<class Integer>
[1] ***integer_range***< range_detail::integer_iterator<Integer> >
irange(Integer first, Integer last);
 
 
>> BTW, it is not clear from the documentation on which file are declared each
>> one og the classes or functions. It would be great to have this information
>> in the pages contained in the Reference section.
>>
>>
> There is a header files section for this purpose. Again this is incomplete
> on the trunk and release branch with updates coming within the next couple
> of days.
Great.
 
>> In Reference section maybe tou can add a Core section that will include the
>> first 3 subsections
>> Overview
>> Synopsis
>> Semantics
>> Metafunctions
>> Functions
>>
>> The section Utilities is out of the reference section. I suppose that this
>> was just a nesteing error.
>> Utilities
>> Class iterator_range
>> Class sub_range
>> Function join
>>
>> Aren't the new headers missing from the section "Library Headers"?
>>
>>
> Many are missing. I have been working on this for some time. There are a
> number of issues with the current docs. There are also tests that haven't
> yet been included into the trunk or release branch. They do however pass and
> will be introduced into the trunk soon.
>
> The additional documentation I will be committing within a day or two to the
> trunk. I expect to be able to merge this to release shortly afterwards.
>
>
>> I see also some interfaces in the documentation using the range_detail
>> namespace. For example in
>> template<class Integer>
>> integer_range< ***range_detail::integer_iterator<Integer>*** >
>> irange(Integer first, Integer last);
>>
>> It would be better to replace this details by implementation_defined and
>> add what are the expected behaviour, and how a user can use this types that
>> depends on the implementation. For example how a user can assign the result
>> of the irange function to a variable?
>>
>>
> Actually I need to properly document my return ranges. This was part of the
> review feedback. The return types are not mere implementation details as I
> originally intended. User of the library do need to know them sometimes. I
> also need to better document the Range Return Categorys in the Range
> Adaptors documentation.

My preceding comment wasn't about range return types, but about a detail implementation on the doc.
 
>> integer_range< ??? > var = irange(0,5);
>>
>> I was wondering if irange can be used with integral types as char and bool?
>> For example,
>>
>> integer_range< ??? > lower_case = irange('a','z'+1);

Could you comment the above?

>> >From the Boost.Iterator doc. counting_iterator is a model of a random
>> access iterator if the integral type provide the needed functions. So what
>> is the difference between counting_range and irange functions?

Could you answer the preceding question?

>> It is a shame that we can not have links between different libraries, so
>> links to the Incrementable requirements defined in Boost.Iterator can be
>> linked from Boost.Range, or can we?
>>
>>
> I'm not sure if this is possible either. I confess to being a bit of a
> newbie to the Boost documentation tool chain. If this is possible then I
> shall improve this aspect sometime after the release of 1.43.
> I hope to add to the documentation after the release anyhow. I think the
> documentation would benefit from several tutorials.

Why these tutorials have not been written before releasing the new Boost.Range library?

Best,
Vicente


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk