libmowgli
A useful collection of routines for programming. Performance and usability-oriented extensions to C.


libmowgli Contains:
  • mowgli_alloc: A safe wrapper around malloc/free.
  • mowgli_argstack: Safe serialization of valists.
  • mowgli_assert: Various assertion routines that can be used.
  • mowgli_bitvector: Bitmasks with an unlimited level of precision.
  • mowgli_dictionary: A keyword-backed definition hashtable class.
  • mowgli_error_backtrace: Provide feedback to users on what caused the error they are recieving.
  • mowgli_exception: Assertions with user feedback.
  • mowgli_formatter: A simple token formatter which is sometimes useful.
  • mowgli_global_storage: A simple global storage library.
  • mowgli_hash: A portable implementation of the FNV-1 hash.
  • mowgli_heap: An optimistic heap-based memory allocator.
  • mowgli_hook: A simple hooks API you can use for your application, which allows for hooks to provide both application data and user data.
  • mowgli_ioevent: Portable I/O completion ports for many OSes.
  • mowgli_list: A high performance linked lists implementation with O(1) scalability for most common operations.
  • mowgli_logger: An internal class for handling logging of exceptions.
  • mowgli_memorypool: A class which allows for memory pooling.
  • mowgli_module: A wrapper around dlopen(3) and dlsym(3).
  • mowgli_object: A simple class which provides reference counted pointers and polymorphism of structs.
  • mowgli_object_class: Classing and subclassing for objects.
  • mowgli_object_metadata: Metadata for objects.
  • mowgli_object_messaging: Messaging and signalling for objects.
  • mowgli_queue: A simple class which implements double-ended queues.
  • mowgli_random: A high performance psuedo-random number generator.
  • mowgli_signal: A wrapper for sigaction(2).
  • mowgli_spinlock: Portable spinlocks.

Download the current development branch (requires Git):
$ git clone git://git.atheme.org/libmowgli.git

Installation is fairly typical:
$ ./configure
$ make
$ sudo make install



Visit the Changelog