Skip to content

GNOME/libgee

Repository files navigation

Libgee is a collection library providing GObject-based interfaces and 
classes for commonly used data structures.

Libgee provides the following interfaces:

     * Traversable
           o Iterable
                 + Collection
                       # List
                             * BidirList
                       # Set
                             * SortedSet
                                 o BidirSortedSet
                       # MultiSet
                       # Queue
                             * Deque
                 + Map
                       # SortedMap
                             * BidirSortedMap
           o Iterator
                 + BidirIterator
                       # BidirListIterator
                 + ListIterator
                       # BidirListIterator
     * MultiMap
     * Future

The ArrayList, ArrauQueue, ConcurrentLinkedList, ConcurrentSet, HashSet,
HashMap, HashMultiSet, HashMultiMap, LinkedList, PriorityQueue, TreeSet,
TreeMap, TreeMultiSet, and TreeMultiMap classes provide a reasonable sample
implementation of those interfaces. In addition, a set of abstract
classes are provided to ease the implementation of new collections.

Around that, the API provide means to retrieve read-only views, 
efficient sort algorithms, simple, bi-directional or index-based mutable 
iterators depending on the collection type.

Libgee is written in Vala and can be used like any GObject-based C 
library. It's planned to provide bindings for further languages.