Projects/Libmowgli
From Atheme
Contents |
Introduction
libmowgli is a class library containing performance and usability oriented extensions to C. It is designed to work in conjunction with GTK+'s GLib, but also functions well as a standalone library.
Features
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
Latest stable release:
- 0.7.0:
Previous releases:
- 0.6.1: tgz tbz2
- 0.6.0: tgz tbz2
- 0.5.0: tgz tbz2
- 0.4.0: tgz tbz2
- 0.3.1: tgz
- 0.3.0: tgz
- 0.2.0: tgz
- 0.1.5: tgz
- 0.1.4: tgz
- 0.1.3: tgz
- 0.1.2: tgz
- 0.1.1: tgz
- 0.1.0: tgz
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.)
Copying
Copyright (c) 2005-2007 Atheme Project (http://www.atheme.org)
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice is present in all copies.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.




