# Home    # nevrax.com   
Nevrax
Nevrax.org
#News
#Mailing-list
#Documentation
#CVS
#Free software
#Download
#FS Suggest
#FAQ
docs
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