<p>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.</p> <h2>Platform abstraction</h2> <ul> <li>clan::System - General system helper functions</li> <li>clan::Thread, clan::Runnable - Threading support</li> <li>clan::Mutex, clan::MutexSection - Simple mutex support</li> <li>clan::InterlockedVariable - Atomic integer operations</li> <li>clan::Event - OS level waitable event</li> <li>clan::RegistryKey - C++ class for accessing the Windows registry</li> <li>clan::ComPtr - Smart pointer template for Component Object Model (COM) objects</li> </ul> <h2>General utility classes</h2> <ul> <li>clan::Exception - Base class for all exceptions thrown by ClanLib</li> <li>clan::DataBuffer - General purpose memory buffer class</li> <li>clan::DisposableObject - Helper for objects that may outlive their disposable resources</li> <li>clan::UserDataOwner - Allows storing any std::shared_ptr as user data on an object</li> <li>clan::DateTime - Date/time handling class</li> </ul> <h2>Thread run-loop</h2> <ul> <li>clan::KeepAlive - Application loop helper</li> <li>clan::KeepAliveObject - Interface for objects participating in the thread keep-alive processing loop</li> <li>clan::Timer - Timer class that invokes a callback on a specified interval</li> </ul> <h2>Signals</h2> <ul> <li>clan::Signal</li> <li>clan::SlotContainer</li> </ul> <h2>Math</h2> <ul> <li>clan::VecXx (clan::Vec4i, clan::Vec3f, clan::Vec2ub, etc) - Vector templates for 2D, 3D and 4D</li> <li>clan::HalfFloat, clan::VecXhf - Half-float converters</li> <li>clan::MatXx (clan::Mat4f, clan::Mat3f, etc) - Matrix templates</li> <li>clan::Quaternionf, clan::Quaterniond - Quaternion rotation/orientation classes</li> <li>clan::Rect, clan::Rectf, clan::Rectd - 2D (left,top,right,bottom) rectangle structure</li> <li>clan::Point, clan::Pointf, clan::Pointd - 2D (x,y) point structure</li> <li>clan::Size, clan::Sizef, clan::Sized - 2D (width,height) size structure</li> </ul> <h2>Text</h2> <p>All strings are assumed to be UTF-8, unless otherwise specified. std::string is used as the main string class.</p> <ul> <li>clan::StringHelp - Misc string helper functions</li> <li>clan::UTF8_Reader - Converts UTF-8 to 32-bit unicode characters</li> <li>clan::StringFormat, clan::string_format - String formatting class and functions</li> <li>clan::Console - Read from/write to console windows</li> </ul> <h2>XML</h2> <ul> <li>clan::XMLTokenizer - Breaks a XML file into tokens</li> <li>clan::XMLWriter - Writes a XML file based on tokens</li> <li>clan::DomDocument - DOM Document class</li> <li>clan::DomNode, clan::DomElement, clan::DomText - Main node types</li> <li>clan::XPathEvaluator - Evaluate the result of xpath expressions</li> </ul> <h2>JSON</h2> <p>The clan::JsonValue class allows you to parse or generate JSON strings.</p> <h2>I/O devices</h2> <ul> <li>clan::IODevice - Input/Output stream abstraction</li> <li>clan::File - Class for opening files</li> <li>clan::IODevice_Memory - IODevice for memory buffers</li> <li>clan::PipeConnection - IODevice for pipes</li> <li>clan::PipeListen - Accepts incoming pipe connections</li> </ul> <h2>File systems</h2> <ul> <li>clan::FileSystem - Virtual file system support</li> <li>clan::DirectoryListing - List files in a virtual file system</li> <li>clan::DirectoryScanner - List files outside of clan::FileSystem</li> <li>clan::PathHelp - Helper class for working with path strings</li> <li>clan::Directory - Perform basic directory based file operations</li> <li>clan::HTMLUrl - Parsing HTML URLs and breaking them down into their basic components</li> </ul> <h2>Zip files</h2> <ul> <li>clan::ZipArchive - Create, open or modify a zip file</li> <li>clan::ZipReader - Low level class for reading zip files sequentially</li> <li>clan::ZipWriter - Write zip files sequentially</li> <li>clan::ZLibCompression - Deflate algorithm compressor / decompressor</li> </ul> <h2>Resource management</h2> <ul> <li>clan::ResourceManager - Class holding all resource caches, which in turn holds all resources</li> <li>clan::ResourceObject - Class that can hold resources of any type, with casting support to specific types</li> <li>clan::Resource<Type> - Proxy to a resource of a specific type</li> <li>clan::ResourceContainer - Helper class for resource caches. Helps storing resources</li> <li>clan::XMLResourceManager - ResourceManager with standard resource caches using XML resources</li> <li>clan::XMLResourceDocument - Document class for the ClanLib XML resource format</li> <li>clan::XMLResourceNode - Resource node in a ClanLib XML resource file</li> </ul> <h2>Crypto</h2> <ul> <li>clan::SHA1, clan::SHA224, clan::SHA256, clan::SHA384, clan::SHA512, clan::SHA512_224, clan::SHA512_256 - SHA Hashing functions</li> <li>clan::MD5 - MD5 Hashing function</li> <li>clan::RSA - RSA encryption/decryption</li> <li>clan::Random - Uses the operating system cryptographically secure pseudorandom number generator</li> <li>clan::AES128_Encrypt, clan::AES128_Decrypt - AES-128 encryption/decryption running in Cipher Block Chaining mode</li> <li>clan::AES192_Encrypt, clan::AES192_Decrypt - AES-192 encryption/decryption running in Cipher Block Chaining mode</li> <li>clan::AES256_Encrypt, clan::AES256_Decrypt - AES-256 encryption/decryption running in Cipher Block Chaining mode</li> <li>clan::Secret - Key class</li> <li>clan::TLSClient - TLS protocol handling for a TLS client</li> </ul> <h2>Error reporting</h2> <ul> <li>clan::CrashReporter - Generates crash reports when the application crashes, or when requested</li> <li>clan::DetectHang - Calls the crash reporter if the constructing thread hangs for more than 30 seconds</li> <li>clan::ExceptionDialog - Displays a modal dialog with exception details</li> </ul>