libmowgli - A useful collection of routines for programming
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

libmowgli is a free but copyrighted library, check COPYING for details.


Contents
--------

1. What is libmowgli?
2. Installation
3. Bug Reports


What is libmowgli?
------------------

libmowgli is a class library containing performance and usability oriented
extensions to C.

It 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.patricia: A dictionary implementation based on a modified
                       patricia tree algorithm (uses nibbles instead of
                       bits for branching).
    - mowgli.error_backtrace: Provide feedback to users on what caused
                              the error they are recieving.
    - 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.json: A simple, flexible, reentrant JSON parser
    - 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.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.eventloop: A portable event loop implementation.
    - mowgli.vio: An abstraction layer for I/O.
    - mowgli.linebuf: A line-buffering implementation for clients.
    - mowgli.thread: Minimal thread abstraction.

More classes will be added with later releases. Please use GitHub's
issue tracker if you have suggestions on what should be implemented.

More information is available at http://www.atheme.org/projects/mowgli.


Installation
------------

Installation is fairly typical:

  $ ./configure
  $ make
  $ sudo make install

(If sudo isn't on your system, su to root. On GNU systems you can even do
"su -c 'make install'", which is basically the same thing as using sudo.)


Bug Reports
-----------

Bugs can be reported using the GitHub issue tracker on the libmowgli-2
project page: https://github.com/atheme/libmowgli-2/issues

