|
|
|
NeL Misc Library : Features | |
Introduction
The Misc library contains all the core types and functionality and utilities necessary to use the Net, AI, 3D or PACS libraries.
It also includes a handful of handy utilities that don't belong in any of the other libraries.
Features
Core functionality
- base data types
- platform independent data type definitions such as sint32, uint32, etc
- exception base class
- debugging macros
- debugging macros (assertions, debugging information, warnings,...) w/ link to displayers
- A fistfull of handy common routines and classes - maths, string manipulation, etc
- Reference counting system with smart pointers
- Smart pointers free the data they point to when it is no longer referenced
- unicode string management
- displayer system which abstracts the displayer (may be stdout, a file, a console window, etc.)
- A log message management system based on displayers. Provides message filtering functionality and support for multiple simultaneous displayers.
- The Class registry which allows instantiation of polymorphic classes by name.
Portability
- System information retrieval (retrieves info on the system OS, processor, RAM)
- Generalised event management system (c/f windows) used for input (keyboard, mouse, etc)
- OS independent thread & mutex management with Posix and Windows implementations
- System for management of internationaly localised text
- OS independent time retrieval (retrieves time from local machine's clock)
Miscelaneous 3d primitives & utilities
- Bounding box and bounding sphere implementations with 1001 associated utility routines
- complete implementation of different formats of RGBA colour representations
Maths
- Quaternion classes for quaternion maths
- Matrix classes for 3d maths
- 2D and 3D vector classes in integer, single precision and double precision float implementations
- Plane class with associated functionality - projection of vector onto plane, polygon or line segment clipping against plane, etc.
Memory management
- Block and pool based memory managers for minimisation of memory fragmentation
- A Fifo manager that houses arbitrary non-uniform sized data blocks. The fifo size is dynamic but memory allocation and liberation is minimal.
Serialisation & streams
- "Based on Java's SERIALISE"
- Includes a file version support mechanism that allows backward compatibility (with old data files)
- Supports serialisation of: base types, classes composed of serialisable types, STL containers of serialisable types, pointers to serialisable data (including a reference counting system which serialises the data that the pointer points to unless it has already been serialsed by another pointer to the same data - At re-load time the pointers are fixed back up to point to the same data).
- Support for Polymorphism (serialisation of classes repherenced by a pinter of their base class type)
- Binary memory stream, ASCII memory stream, binary file stream implementations.
Utilities
- Functionality for loading and treating bitmaps of different formats
- A Search path management system for locating data files
- A string/ integer association system (handy for compacting message types)
- A configuration file loading and management system - capable of detecting changes to configuration files and reloading their contents without stopping and relaunching the program.
- Manages variables of type string, integer, float, or an array of any of these.
- A system for managing lists of functions refernced by a string and calling the appropriate command when passed a string. This system is handy for managing a command line at run time.
- A system for queuing tasks for threads to process. This system is handy for things like background loading.
- Complete implementation of arbitrary sized bit arrays
|
|