lean cpp library
A lean C++ library providing efficient utility classes for high-performance C++ applications.
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
lean::containers::accumulation_map< Container >Map wrapper class providing improved performance on repeated element accumulation
lean::containers::accumulation_vector< Container, ReallocationPolicy >Vector wrapper class providing improved performance on repeated element accumulation
lean::memory::aligned< Alignment, Heap >Aligns derived classes according to the given alignment template argument
lean::containers::anyAny interface
lean::containers::any_value< Value, Heap >Any value
lean::strings::assert_nullterminated_compatible< Compatible, Char, Traits >Asserts that the given type is nullterminated-character-range-compatible
lean::smart::auto_restore< Value >Auto restore class that automatically restores the initial value of the stored object on destruction
lean::strings::basic_charbuf< Elem, Traits >Character stream buffer class that is required to allow for allocation-free usage of STL streaming facilities
lean::strings::basic_charstream< Elem, Traits >Character stream class that allows for allocation-free usage of STL streaming facilities
lean::containers::simple_hash_map< Key, Element, Policy, Hash, KeyValues, Pred, Allocator >::basic_iterator< Element >Simple hash map iterator class
lean::logging::basic_log_stream< Char, Traits >Log stream class that prints any given input to a given stream. As streams are not guaranteed to be thread-safe, it is recommended to only ever hold one wrapper for any given stream at a time
lean::functional::callable_fun< Signature >Stores the pointer to a function to be called on invokation of operator ()
lean::functional::callable_memfun< Class, Signature >Stores an object and a pointer to a method to be called on invokation of operator ()
lean::meta::ce_int< ConstIntExpr >Helper struct that may be used to pass constant integers (compile-time literals)
lean::strings::char_traits< Char >Provides common null-terminated character range functionality for the given character type. The default implementation treats characters as arbitrary POD types
lean::strings::char_traits< char >
lean::strings::char_traits< wchar_t >
lean::types::char_type< Size >Provides a character type of the given size
lean::memory::check_alignment< Alignment >Checks whether the given alignment is a valid power of two
lean::memory::chunk_heap< ChunkSize, Heap, StaticChunkSize, DefaultAlignment >Contiguous chunk allocator heap
lean::time::clocktimerClock timer class
lean::smart::cloneableBase class that may be used to tag a specific class cloneable
lean::smart::cloneable_obj< Cloneable, PointerSemantics >Cloneable object class that stores an automatic instance of the given cloneable type
lean::smart::close_handle_policy< Handle >Default handle guard policy
lean::smart::com_ptr< COMType, Critical >COM pointer class that performs reference counting on COM objects of the given type
lean::meta::complete_type_or_base< FullType, BaseType >Redefines FullType if complete (and derived from BaseType), BaseType otherwise
lean::meta::conditional_type< Condition, TrueType, FalseType >Redefines TrueType if condition fulfilled, FalseType otherwise
lean::concurrent::critical_sectionImplements a light-weight reentrant binary lock
lean::memory::crt_heapDefault CRT heap
lean::properties::deallocate_property_data_policy
lean::containers::default_keys< Key >Defines default values for invalid & end keys
lean::containers::default_keys< std::basic_string< Char, Traits, Allocator > >
lean::containers::default_keys< Value * >
lean::smart::default_lock_policy< Lockable >Default locking policy
lean::containers::default_reallocation_policy< Container >Leaves reallocation to the specified container type
lean::properties::delete_property_data_policy
lean::smart::delete_ptr_policy< Type >Delete scoped pointer policy
lean::smart::delete_ptr_policy< Type[]>
lean::meta::dependent_false< T >Defines a false literal, ignoring any template arguments
lean::smart::destroy_ptr_policy< Type >Destroy scoped pointer policy
lean::smart::destroy_window_policy< Handle >Window handle guard policy
lean::properties::destruct_property_data_policy
lean::containers::dynamic_array< Element, Heap >Dynamic array class
lean::meta::enable_if< Cond, Type >Redefines the given type if true, empty otherwise
lean::strings::enable_if_not_range< Range, Type >Redefines the given type if Range is not a range, empty otherwise
lean::strings::enable_if_not_range2< Range1, Range2, Type >Redefines the given type if either Range1 or Range2 is not a range, empty otherwise
lean::strings::enable_if_range< Range, Type >Redefines the given type if Range is a range, empty otherwise
lean::strings::enable_if_range2< Range1, Range2, Type >Redefines the given type if both Range1 and Range2 are ranges, empty otherwise
lean::concurrent::eventImplements an event
lean::io::filesystem_chars< Char >Special file system characters
lean::meta::first_non_void< Type1, Type2 >Redefines Type1 if not void, else Type2 if not void, nothing otherwise
lean::io::float_serialization< Type, Delimiter >Float value serialization
lean::types::float_type< Size >Provides a floating-point type of the given size
lean::pimpl::forward_val< Value, Size >Opaque value class that stores values of the given size & forward-declared type
lean::smart::free_library_policy< Handle >Dll handle guard policy
lean::properties::generic_property_type< Type, Heap, Alignment >Generic property type implementation
lean::smart::generic_ptr_policy< Type >Generic scoped pointer policy
lean::smart::generic_ptr_policy< Type[]>
lean::io::generic_serialization< Type, Delimiter >Generic value serialization
lean::io::generic_serializer< Serialization >Generic value serializer
lean::smart::handle_guard< Handle, ReleasePolicy >Handle guard that releases the stored handle on destruction
lean::containers::Impl::has_reverse_iterator< Container >Checks whether the given type has a reverse iterator type
lean::functional::hash< Element >Computes hash values from elements of the given type
lean::memory::heap_allocator< Element, Heap, Alignment >STL allocator heap adapter
lean::memory::heap_bound< Heap >Always allocates space for derived classes on the same specified heap
lean::time::highres_timerHigh-resolution timer class
lean::meta::identity< Type >Redefines the given type
lean::types::ieee_float< Float, Desc >Provides utility methods for floating-point values of the given type
lean::types::ieee_float_desc< Float >Describes the given float type
lean::meta::inh_strip_array< Type >Inherits the stripped type
lean::meta::inh_strip_modref< Type >Inherits the stripped type
lean::meta::inh_strip_pointer< Type >Inherits the stripped type
lean::meta::inh_strip_reference< Type >Inherits the stripped type
lean::properties::property_collection< Class, Description, Vector >::inplace_builder< Collection >Allows for fully inplace construction of whole property collections
lean::meta::int_dependent_false< N >Defines a false literal, ignoring any template arguments
lean::io::int_serialization< Type, Delimiter >Integer value serialization
lean::types::int_type< Class, Size >Provides an integer type of the given class and size
lean::meta::is_derived< Type, Base >True if Type is derived from Base, false otherwise
lean::meta::is_equal< Type1, Type2 >True if types are equal, false otherwise
lean::strings::is_nullterminated_compatible< Compatible, Char, Traits >Checks if the given type is nullterminated-character-range-compatible
lean::strings::is_nullterminated_convertible< Compatible, Char, Traits >Checks if the given type is either nullterminated-character-range-compatible or a character range
lean::strings::is_range< Type >Checks if the given type is a range type
lean::meta::is_unsigned< Integer >Checks if the given integer type is unsigned
lean::io::raw_file_inserter< BufferSize >::iteratorIterator type
lean::logging::logLog class
lean::logging::log_debuggerLog debugger class that prints any given input to the debug output window
lean::logging::log_stream_outLog stream class
lean::logging::log_targetLog target interface
lean::io::mapped_fileFile class that allows for memory-mapped read/write access to a given file
lean::io::mapped_file_baseBase class for mapped files
lean::io::max_float_string_length< Float >Estimates the maximum string length for floating-point values of the given type
lean::io::max_int_string_length< Integer >Estimates the maximum string length for integers of the given type
lean::meta::maybe_dereference_once< Type >Dereferences a given value type once, if the value type is a pointer type
lean::containers::move_reallocation_policy< Container, GrowthDenominator >Allows for custom move semantics on element reallocation
lean::properties::named_property_desc< Class, Derived >Describes a named property
lean::tags::nonassignableBase class that may be used to tag a specific class nonassignable
lean::tags::nonassignable_chain< Base >Base class that may be used to tag a specific class nonassignable
lean::tags::nonconstructibleBase class that may be used to tag a specific class nonconstructible
lean::tags::noncopyableBase class that may be used to tag a specific class noncopyable
lean::tags::noncopyable_assignableBase class that may be used to tag a specific class noncopyable but assignable
lean::tags::noncopyable_assignable_chain< Base >Base class that may be used to tag a specific class noncopyable but assignable
lean::tags::noncopyable_chain< Base >Base class that may be used to tag a specific class noncopyable
lean::strings::nullterminated< Char, Traits >Nullterminated character half-range class that may be constructed from arbitrary string classes
lean::strings::nullterminated_compatible< Compatible, Char, Traits >Spezialize this class to make your string class compatible with the nullterminated character range class
lean::strings::nullterminated_compatible< std::basic_string< Char, StringTraits, StringAllocator >, Char, NullterminatedTraits >
lean::strings::nullterminated_implicit< Char, Traits >Nullterminated character half-range class that may be IMPLICITLY constructed from arbitrary string classes. May be used in parameter lists, not recommended elsewhere
lean::strings::nullterminated_incompatible
lean::strings::nullterminated_range< Char, Traits >Nullterminated character range class that may be constructed from arbitrary string classes
lean::strings::nullterminated_range_implicit< Char, Traits >Nullterminated character range class that may be constructed IMPLICITLY from arbitrary string classes. May be used in parameter lists, not recommended elsewhere
lean::memory::object_pool< Element, ChunkSize, Heap, StaticChunkSize, Alignment >Object pool
lean::pimpl::opaque_val< OpaqueTypeWrapper, OpaqueTypeWrapperBase >Opaque value class that stores values of the type wrapped by OpaqueTypeWrapperBase, providing access to these values via the type wrapped by OpaqueTypeWrapper, provided OpaqueTypeWrapper is both fully defined and derived from OpaqueTypeWrapperBase
lean::memory::optional_mem_block< Size >Block of memory that may be zero-sized
lean::memory::optional_mem_block< 0 >
lean::pimpl::pimpl_delete_policyDefault PImpl pointer destruction policy
lean::pimpl::pimpl_ptr< Implementation, ImplementationBase, DestroyPolicy >Smart pointer class allowing for secure storage of forward-declared pimpl classes
lean::containers::simple_vector_policies::policy< RawMove, NoDestruct, NoConstruct >Simple vector element construction policy
lean::containers::simple_hash_map_policies::policy< RawMove, NoDestruct, RawKeyMove, NoKeyDestruct >Simple hash map element construction policy
lean::properties::property_c_accessor_binder< Class, UnionValueArg, ArgCount, Return, ValueArg, BaseClass >Property_c_* factory class
lean::properties::property_c_getter< Class, UnionValueArg, ArgCount, Return, Getter, ValueArg, BaseClass >Provides read access to arbitrary object data of the given type using a given multi-parameter getter method
lean::properties::property_c_setter< Class, UnionValueArg, ArgCount, Return, Setter, ValueArg, BaseClass >Provides write access to arbitrary object data of the given type using a given multi-parameter setter method
lean::properties::property_collection< Class, Description, Vector >Container class that may be used to store information on class / object properties
lean::properties::property_constant< Class, Value >Holds a constant array of values, returning a matching subset of these on getter access
lean::properties::property_desc< Class, Derived >Destribes a property
lean::properties::property_getter< Class >Fetches data from a specific source
lean::properties::property_n_accessor_binder< Class, UnionValue, Count, Return, Value, BaseClass >Property_n_* factory class
lean::properties::property_n_getter< Class, UnionValue, Count, Return, Getter, Value, BaseClass >Provides read access to arbitrary object data of the given type using a given getter method
lean::properties::property_n_setter< Class, UnionValue, Count, Return, Setter, Value, BaseClass >Provides write access to arbitrary object data of the given type using a given setter method
lean::properties::property_r_accessor_binder< Class, UnionValueReturn, ValueReturn, BaseClass >Property_r_* factory class
lean::properties::property_r_getter< Class, UnionValueReturn, Getter, ValueReturn, BaseClass >Provides read access to arbitrary object data of the given type using a given return-value getter method
lean::properties::property_setter< Class >Passes data to a specific destination
lean::properties::property_type
lean::strings::range< Iterator >Iterator range
lean::strings::range_char_type2< Char *, Chars2 >
lean::strings::range_char_type2< Char1 *, Char2 * >
lean::strings::range_char_type2< Chars1, Char * >
lean::strings::range_char_type< Char * >
lean::io::raw_fileFile class that allows for raw read/write operations on a given file
lean::io::raw_file_inserter< BufferSize >File inserter class that follows the STL output iterator concept to allow for convenient buffered file output
lean::memory::heap_allocator< Element, Heap, Alignment >::rebind< Other >Allows for the creation of differently-typed equivalent allocators
lean::meta::rec_strip_modifiers< Type >Recursively strips all modifiers from the given type
lean::smart::ref_counter< Counter, Allocator >Reference counter class that maintains strong and weak reference counts
lean::smart::ref_counter< Counter, Allocator >::ref_countsReference counter structure
lean::smart::release_ptr_policy< Type >Release scoped pointer policy
lean::smart::resource< Counter, Allocator, Lazy >Base class that may be used to tag a specific class as a resource
lean::smart::resource_interface< Counter, Allocator >Interface that may be used to tag a specific class as a resource
lean::smart::resource_ptr< Resource, Critical >Resource pointer class that performs strong reference counting on the given resource type
lean::containers::Impl::reverse_iterators< Container >Redefines reverse iterator types, if available
lean::containers::Impl::reverse_iterators_impl< HasReverseIterators, Container >Redefines reverse iterator types, if available
lean::containers::Impl::reverse_iterators_impl< true, Container >
lean::io::rmapped_fileFile class that allows for memory-mapped read access to a given file
lean::pimpl::safe_pimpl_baseBase class that permits safe destruction for incomplete private implementation classes
lean::smart::scope_annex_baseStores and calls a callable object on destruction
lean::smart::scope_annex_impl< Callable >Stores and calls a callable object on destruction
lean::smart::scope_guard_baseStores and calls a callable object on destruction, if not disarmed
lean::smart::scope_guard_impl< Callable >Stores and calls a callable object on destruction, if not disarmed
lean::smart::scoped_lock< Lockable, Policy >Automatic lock management class that locks a given object on construction to be unlocked on destruction
lean::properties::scoped_property_data< Polocy >
lean::smart::scoped_ptr< Type, ReleasePolicy >Scoped pointer class that releases the object pointed to on destruction
lean::concurrent::semaphoreImplements a semaphore
lean::io::serializerValue serializer
lean::concurrent::shareable_spin_lock< Counter >Implements a shareable spin lock that is NOT reentrant
lean::concurrent::shared_lock_policy< Lockable >Shared locking policy
lean::containers::simple_hash_map< Key, Element, Policy, Hash, KeyValues, Pred, Allocator >Simple and fast hash map class, partially implementing the STL hash map interface
lean::containers::simple_vector< Element, Policy, Allocator >Simple and fast vector class, partially implementing the STL vector interface
lean::types::size_info< Type >Provides enhanced type size information
lean::concurrent::spin_lock< Counter >Implements a simple binary spin lock that is NOT reentrant
lean::memory::stack_aligned< Alignment >Aligns derived classes according to the given alignment template argument when instances are created on the stack
lean::strings::string_traits< String >Provides common string functionality for the given string type
lean::meta::strip_array< Type >Strips a array from the given type
lean::meta::strip_const< Type >Strips a const modifier from the given type
lean::meta::strip_modifiers< Type >Strips cv-modifiers from the given type
lean::meta::strip_modref< Type >Strips cv-modifiers and references from the given type
lean::meta::strip_pointer< Type >Strips a pointer from the given type
lean::meta::strip_reference< Type >Strips a reference from the given type
lean::meta::strip_volatile< Type >Strips a volatile modifier from the given type
lean::smart::terminate_guardTerminates the application on destruction, if not disarmed
lean::containers::test_value
lean::concurrent::threadManages a simple thread
lean::time::timerDefault timer class
lean::tags::transitive_ptr< Type, Immutable >Transitive pointer class that applies pointer const modifiers to the objects pointed to
lean::types::type_infoEnhanced type info
lean::properties::ui_property_desc< Class, Widget, Derived >Describes a UI property
lean::meta::strip_reference< Type >::undo< Other >Adds any reference stripped
lean::meta::strip_const< Type >::undo< Other >Adds any modifiers stripped
lean::meta::strip_array< Type >::undo< Other >Adds any array stripped
lean::meta::strip_modref< Type >::undo< Other >Adds any modifiers and references stripped
lean::meta::strip_volatile< Type >::undo< Other >Adds any modifiers stripped
lean::meta::strip_pointer< Type >::undo< Other >Adds any pointer stripped
lean::meta::strip_modifiers< Type >::undo< Other >Adds any modifiers stripped
lean::pimpl::unsafe_pimpl_baseBase class that permits unsafe destruction for incomplete private implementation classes, ONLY USE IF CORRECT DESTRUCTION NOT REQUIRED
lean::concurrent::upgrade_lock_policy< Lockable >Shared lock upgrade locking policy
lean::io::wcharcvtEncodes wchar_t strings as true 16-byte strings
lean::smart::weak_resource_ptr< Resource >Resource pointer class that performs weak reference counting on the given resource type
lean::memory::win_heapWindows heap
lean::xml::xml_file< Char >This convenience class wraps up the most common xml file functionality