Re: [Vala] Libgee's Roadmap proposal



Hi,

A little more than a year ago I have made a proposal to extend LibGee
when I rewrote the tests for it, but at that time there was not much
interest in the changes. It may be good to repeat what I had in mind
at that time:

I would also like to propose an extension to the interfaces in form of additional convenient / often used 
methods. What I had in mind is this:

Collection interface:
- void add_all(Collection) - Adds all items from the input collection to this collection. Convenient for 
joining collections. Java also has this on the interface of Collection.
- bool contains_all(Collection) - Checks if all items in the input collection are present in this 
collection. Convenient for checking items for example if "a" AND "b" exist in collection.
- bool contains_any(Collection) - Checks if any items in the input collection are present in this 
collection. Convenient for checking items for example if "a" OR "b" exist in collection.
- bool is_empty() - special state of a collection when it doesn't contain any value. Added because it is 
clearer as list.size == 0.

List interface
- G first()
- G last() - First and last items are often special - it adds better clarity to the algorithm if they don't 
need to be "addressed" as list.get(0) or worse list.get(list.size -1).

Set interface

Map interface
- void set_all(Map) - Same as add_all for collections.
- expose Node<K,V> and make it possible to iterate through Nodes:
foreach (Node<int,int> item in map.get_nodes()) {
}

Iterators
 - It would be convenient to have a reverse iterator for lists which would also allow to iterate backwards.
 - class with special iterators/iterables that can iterate Forward / Backwards, skip elements, iterate 
through enumerated list, generators

Some of the things have already been proposed and there are other
things on my mind that could be done.

I still have the code of the changes (including tests) somewhere - I
will seek them out and merge them with the latest libgee version.

Maybe it would be a good thing to add on the libgee wiki a subpage
with proposed changes/additions so that all this things aren't
forgotten.

Regards, Tomaž



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]