Boost logo

Boost :

Subject: Re: [boost] Review Request: Boost.Itl; The Interval Template Library
From: Gottlob Frege (gottlobfrege_at_[hidden])
Date: 2009-09-23 23:29:33

On Wed, Sep 23, 2009 at 8:42 AM, Stewart, Robert <Robert.Stewart_at_[hidden]> wrote:
> Joachim Faulhaber wrote:
>> 2009/9/21 Simonson, Lucanus J <lucanus.j.simonson_at_[hidden]>:
>> > Joachim Faulhaber wrote:
>> >>>> the Interval Template Library is now in a state
>> >>>> where I think it does conform the requirements
>> >>>> and guidelines for boost libraries fairly well.
>> >>>
>> >>>(Markus Werle)
>> >>> Actually I am very unlucky with the name "itl".
>> >
>> > I'd suggest naming it either Interval
>> > Set--boost::interval_set or Interval Set Library--boost::isl.
>> after pondering for a while I tend to prefer this name
>> Compact Associative Containers
>> boost::compass
> That's a highly creative name which I don't foresee its conflicting with other libraries.

Except a compass library for handling built in compasses of various
smart phones. :-)

> How about Minimal (or Minimized) Associative Containers (MAC)?  Packed Associative Containers (PAC)?
> None of those names, however, reveals the interval behaviors of your containers which are their raison d'être.
> Interval-Based Associative Containers (IBAC)?  Is "associative" necessary in the name: Interval-Based Containers (IBC)?  Compact Interval-based Associative Containers (CIAC or CIBAC)?  (Associative) Containers of Intervals ((A)CI or (A)COI)?  Compact Associative Containers of/for Intervals (CACI)?  Packed Associative Interval Containers (PAIC)?
> Of all these ideas, I rather like CACI.  The acronym is pronounceable (like khaki), and the full name is highly descriptive.

I would leave 'compact' out of it, and 'interval' in. I'm sure there
are other ways to compact a container; this library chose intervals.
And NOT just as an implementation detail. Intervals are very much
forefront in the design and API. Furthermore, there may be other ways
to compact interval sets even more. (ie with generating functions - ie
how would this interval library handle the Cantor Set!?).

The word 'interval' may conflict with other uses of the word, but they
both derive from the same mathematical concept - a range of numbers.
Hey, we could use the word 'range'. Oh wait, also already taken. (Or
are these concepts actually the same and using boost::range as an
interval makes sense at times. I think so...).

Could the library be expanded to 2D or more? If so, then 'region'
might be a more applicable word. Or is there another mathematical
word we are forgetting about? Maybe something in the field of

Might the library be expanded to other containers (ie besides
associative ones)? interval_vector? Or is that less interesting?
Given the ordering requirement, is there any difference between an
interval_vector and an interval_set (in general terms, not specific
properties such as amortized allocation, etc). ie should
'associative' be part of the name?

So, to me, that leaves 'interval' and 'container'. icl. Although I
like the sound of 'isl' (Set) better.

But really, we should avoid TLAs.

Did that help? Probably not.


So anyhow, I should also say that after years of working on video
editing applications (ie Adobe Premiere Pro), I was considering
writing a similar library. (To handle the range of time for each
video clip on a timeline, etc). Thanks for beating me to it!

As an example usage, with your library, how would you write a 'for a
given interval_set, is this time-range [a, b) empty' function?


Boost list run by bdawes at, gregod at, cpdaniel at, john at