Core Module Reference

The clanCore library is the base library used by all other ClanLib libraries. It provides a basic framework with common functionality needed by almost all types of applications.

## Platform abstraction

- clan::System - General system helper functions
- clan::Thread, clan::Runnable - Threading support
- clan::Mutex, clan::MutexSection - Simple mutex support
- clan::InterlockedVariable - Atomic integer operations
- clan::Event - OS level waitable event
- clan::RegistryKey - C++ class for accessing the Windows registry
- clan::ComPtr - Smart pointer template for Component Object Model (COM) objects

## General utility classes

- clan::Exception - Base class for all exceptions thrown by ClanLib
- clan::DataBuffer - General purpose memory buffer class
- clan::DisposableObject - Helper for objects that may outlive their disposable resources
- clan::UserDataOwner - Allows storing any std::shared_ptr as user data on an object
- clan::DateTime - Date/time handling class

## Thread run-loop

- clan::KeepAlive - Application loop helper
- clan::KeepAliveObject - Interface for objects participating in the thread keep-alive processing loop
- clan::Timer - Timer class that invokes a callback on a specified interval

## Signals

- clan::Signal
- clan::SlotContainer

## Math

- clan::VecXx (clan::Vec4i, clan::Vec3f, clan::Vec2ub, etc) - Vector templates for 2D, 3D and 4D
- clan::HalfFloat, clan::VecXhf - Half-float converters
- clan::MatXx (clan::Mat4f, clan::Mat3f, etc) - Matrix templates
- clan::Quaternionf, clan::Quaterniond - Quaternion rotation/orientation classes
- clan::Rect, clan::Rectf, clan::Rectd - 2D (left,top,right,bottom) rectangle structure
- clan::Point, clan::Pointf, clan::Pointd - 2D (x,y) point structure
- clan::Size, clan::Sizef, clan::Sized - 2D (width,height) size structure

## Text

All strings are assumed to be UTF-8, unless otherwise specified. std::string is used as the main string class.

- clan::StringHelp - Misc string helper functions
- clan::UTF8_Reader - Converts UTF-8 to 32-bit unicode characters
- clan::StringFormat, clan::string_format - String formatting class and functions
- clan::Console - Read from/write to console windows

## XML

- clan::XMLTokenizer - Breaks a XML file into tokens
- clan::XMLWriter - Writes a XML file based on tokens
- clan::DomDocument - DOM Document class
- clan::DomNode, clan::DomElement, clan::DomText - Main node types
- clan::XPathEvaluator - Evaluate the result of xpath expressions

## JSON

The clan::JsonValue class allows you to parse or generate JSON strings.

## I/O devices

- clan::IODevice - Input/Output stream abstraction
- clan::File - Class for opening files
- clan::IODevice_Memory - IODevice for memory buffers
- clan::PipeConnection - IODevice for pipes
- clan::PipeListen - Accepts incoming pipe connections

## File systems

- clan::FileSystem - Virtual file system support
- clan::DirectoryListing - List files in a virtual file system
- clan::DirectoryScanner - List files outside of clan::FileSystem
- clan::PathHelp - Helper class for working with path strings
- clan::Directory - Perform basic directory based file operations
- clan::HTMLUrl - Parsing HTML URLs and breaking them down into their basic components

## Zip files

- clan::ZipArchive - Create, open or modify a zip file
- clan::ZipReader - Low level class for reading zip files sequentially
- clan::ZipWriter - Write zip files sequentially
- clan::ZLibCompression - Deflate algorithm compressor / decompressor

## Resource management

- clan::ResourceManager - Class holding all resource caches, which in turn holds all resources
- clan::ResourceObject - Class that can hold resources of any type, with casting support to specific types
- clan::Resource<Type> - Proxy to a resource of a specific type
- clan::ResourceContainer - Helper class for resource caches. Helps storing resources
- clan::XMLResourceManager - ResourceManager with standard resource caches using XML resources
- clan::XMLResourceDocument - Document class for the ClanLib XML resource format
- clan::XMLResourceNode - Resource node in a ClanLib XML resource file

## Crypto

- clan::SHA1, clan::SHA224, clan::SHA256, clan::SHA384, clan::SHA512, clan::SHA512_224, clan::SHA512_256 - SHA Hashing functions
- clan::MD5 - MD5 Hashing function
- clan::RSA - RSA encryption/decryption
- clan::Random - Uses the operating system cryptographically secure pseudorandom number generator
- clan::AES128_Encrypt, clan::AES128_Decrypt - AES-128 encryption/decryption running in Cipher Block Chaining mode
- clan::AES192_Encrypt, clan::AES192_Decrypt - AES-192 encryption/decryption running in Cipher Block Chaining mode
- clan::AES256_Encrypt, clan::AES256_Decrypt - AES-256 encryption/decryption running in Cipher Block Chaining mode
- clan::Secret - Key class
- clan::TLSClient - TLS protocol handling for a TLS client

## Error reporting

- clan::CrashReporter - Generates crash reports when the application crashes, or when requested
- clan::DetectHang - Calls the crash reporter if the constructing thread hangs for more than 30 seconds
- clan::ExceptionDialog - Displays a modal dialog with exception details