Skip to content

Latest commit

 

History

History
109 lines (98 loc) · 10.7 KB

CHANGELOG.md

File metadata and controls

109 lines (98 loc) · 10.7 KB

Note: all C++ names mentioned hereafter are relative to namespace tools, file names are relative to folder cpptools.

v1.1

What's new

  • Range view library, featuring:
    • ranges::dereference_view
    • ranges::reverse_pair_view
    • ranges::reverse_map_pair_view
    • ranges::member_view
    • For each of these views, CPOs acting as range adaptor objects and range adaptor closure objects in namespace views
  • Command-line argument parsing facility in namespace cli
    • New exception category arg_parse_exception
  • New exception category lookup_exception (replaces inaptly named exception category range_exception)
  • New functions narrow and widen in header utility/string.hpp
  • Minor adjustments:
    • Unit tests for (nearly) everything which didn't have them
    • Fixed wrong offset calculation in contiguous_storage
    • Fixed implementation of to_string
    • Moved various small function definitions into headers and made them inline
  • Breaking changes:
    • Exception category range_exception was removed (in favor of new category lookup_exception)
    • Header interruptible.hpp was moved from directory thread/interface to directory thread
    • Header allocator.hpp was moved from directory utility to directory utility/detail
    • Removed namespace cli::input, all names that were declared in it are now in namespace cli
    • Removed namespace string, all names that were declared in it are now in namespace ::tools
    • Concept stringable was moved from header utility/concepts.hpp to header utility/to_string.hpp
    • Class template sine_generator was moved out of namespace math
    • clamped_range and wrapping_range were renamed to clamped_value and wrapping_value respectively
    • Removed operator overloads on both clamped_value and wrapping_value which led to confusing semantics
    • Fixed incorrect arithmetic on both clamped_value and wrapping_value
    • Reordered constructor parameters of monitored_value
  • CMake:
    • Fixed a warning flag being wrongly passed to MSVC, causing build to fail
    • Export CppTools CMake module as part of installed package, its path is automatically appended to CMake module paths when the installed package is imported

v1.0

Major features

Thing Description View source
bitwise_enum_ops Namespace containing concept-enabled operator overloads to perform bitwise operation on enums v1.0 / latest
clamped_range Wrapper for a value to be constrained in a certain range, clamping it to its bounds whenever they should be exceeded v1.0 / latest
contiguous_storage Wrapper that provides type-safe access to unitialized memory v1.0 / latest
exception Extensible CRTP-based exception model with convenient macros to throw them v1.0 / latest
interruptible Interface for an interruptible task-runner v1.0 / latest
monitored_value Wrapping around a value, which raises a externally provided flag whenever the value is modified v1.0 / latest
Predicates Collection of arithmetic and logic predicate generators v1.0 / latest
String toolbox Collection of common operations to be performed on strings v1.0 / latest
tree Arbitrary tree with complete allocator-awareness v1.0 / latest
worker Proposed implementation of interruptible v1.0 / latest
wrapping_range Wrapper for a value to be constrained in a certain range, wrapping around whenever bounds should be exceeded v1.0 / latest

Other features

Thing Description View source
Heterogenous lookup facilities Collection of types which can be used to enable hetoregenous lookup on associative containers v1.0 / latest
Merge strategies Collection of operations describing how an object can be merged into another v1.0 / latest
Parameter deduction facitilies Functions to be used in unevaluated contexts to deduce in a tuple the argument types of another function v1.0 / latest
Unary operations Collection of generic operations that can be handy to name rather than to write out v1.0 / latest

CMake install capabilities

  • Install to a path on your CMAKE_PREFIX_PATH list
  • find_package( cpptools 1.0 REQUIRED ) should succeed and expose three targets:
    • cpptools::cpptools_static, which can be statically linked against
    • cpptools::cpptools_shared, which can be dynamically linked against
    • cpptools::cpptools, an alias to cpptools::cpptools_static
  • The installed package is relocatable.

Builds without warnings on Clang 18.1.8 and MSVC 19.40, in both debug and release modes.