Libgee - GObject collection library



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

Libgee provides the following interfaces:

  • Travsersable
    • Iterable
      • Collection
        • List
          • BidirList

        • Set
          • SortedSet

            • BidirSortedSet

        • MultiSet

        • Queue
          • Deque
        • Map
          • SortedMap

            • BidirSortedMap

    • Iterator
      • BidirIterator

        • BidirListIterator

      • ListIterator

        • BidirListIterator

  • MultiMap

  • Future

The ArrayList, ArrayQueue ConcurrentLinkedList, ConcurrentSet, HashSet, HashMap, HashMultiSet, HashMultiMap, LinkedList, PriorityQueue, Promise, 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.


Libgee is licensed under the LGPL 2.1+


Libgee is available for download at


Currently there are 2 major versions of API widely deployed.

  • gee 0.8 - current version of API used in all newer releases. The library is using proper versioning and the API and ABI is kept stable. Unfortunately it uses suffix 0.8, which looks like an older version than 1.0 even though it is newer.
  • gee 0.6 (aka. gee-1.0) - a legacy API, no longer developed. From version 0.1 to 0.6 the suffix for the library was 1.0 even though the API and ABI was not always kept stable.


Git repository

Development is going on git:// and can be viewed here.

You can check out the current development snapshot using (please note, that you need vala installed to build it from git):

 git clone git://


If you encounter any bug when using libgee, please, check on its Bugzilla page if it is reported and, if not, do it.


Discussion currently takes place on the Libgee mailing list and in the IRC channel #gee on GIMPnet.

  • Jürg Billeter <j at bitron dot ch>

  • Didier "Ptitjes" <ptitjes at free dot fr>

  • Maciej Piechotka <uzytkownik2 at gmail dot com>

Projects/Libgee (last edited 2016-07-15 19:24:13 by ChrisDaley)