misc - ryzom/ryzomcore GitHub Wiki
title: NeL Misc description: published: true date: 2023-03-16T22:54:47.191Z tags: editor: markdown dateCreated: 2019-11-26T05:42:01.653Z
The NeL Misc library contains all the core types, functionality and utilities necessary to use the Net, 3D or PACS libraries.
It also includes a handful of handy utilities that don't belong in any of the other libraries.
- Handling Command Line Options (TODO)
 - Logging: Debugging macros (assertions, debugging information, warnings,...) linked to displayers
 - Log Displayer: Abstracted displayer system (may be stdout, a file, a console window, etc.)
 - Custom Logging: Support for multiple simultaneous log displayers.
 - Custom Log Displayer: Create your own log displayer
 - Log filtering functionality
 - Console Commands: This system is handy for managing a command line at run time
 - Console Variables
 - Basic Debugging
 - Using Config Files: A configuration file system capable of detecting and reloading changes to configuration
 
- String Utilities: Unicode string management
 - Internationalization: System for management of internationaly localised text
 
- Serialization
 - File and Path Management: A Search path management system for locating data files
 - Creating and Using Big Files
 - Creating and Using XML Packs
 - Class Registry: The Class registry which allows instantiation of polymorphic classes by name
 
- Base data types, platform independent data type definitions such as sint32, uint32, etc., and exception base classes
 - System information retrieval (retrieves info on the system OS, processor, RAM)
 - Application Contexts
 - Library Loading
 - Timing Systems: OS independent time retrieval (retrieves time from local machine's clock)
 
- Events and Managing Input: Generalised event management system (c/f windows) used for input (keyboard, mouse, etc)
 - Threading: OS independent thread & mutex management with POSIX and Windows implementations
 - A system for queuing tasks for threads to process. This system is handy for things like background loading
 
- 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.
 - Bounding box and bounding sphere implementations with 1001 associated utility routines
 
- Reference counting system with smart pointers
 - 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.
 - Complete implementation of arbitrary sized bit arrays
 
- Complete implementation of different formats of RGBA colour representations
 - Functionality for loading and treating bitmaps of different formats
 
These samples illustrate the usage of the Misc library.
- command: How to create commands and execute them using ICommand class. It's a generic system to create and execute commands at run time. (It is used in all services, Snowballs client and so on.)
 - configfile: How to use a NeL configuration file. (This system is used in all services, snowballs client...).
 - debug: How to use basic debug features that are used everywhere in NeL.
 - i18n: How to use text internationalisation.
 - log: Use the log and displayer system that is a generic way to generate output (on screen, file...).
 - strings: Basic program to check if NeL types are valid.
 - types_check: Basic program to check if NeL types are valid.
 
- https://web.archive.org/web/20070418012757/http://www.nevrax.org/tikiwiki/tiki-index.php?page=NeLMisc
 - https://web.archive.org/web/20080724090531/http://www.opennel.org/confluence/display/NEL/NeLDocumentation
 - https://web.archive.org/web/20100511090441/http://www.opennel.org/confluence/display/~mattr/MtrNelManualNotes