Skip to content

Releases: deqyra/CppTools

v1.1

21 Aug 16:43
8184fb9
Compare
Choose a tag to compare

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

07 Jul 13:00
Compare
Choose a tag to compare

Major features

  • tree, an arbitrary tree with complete allocator-awareness
  • contiguous_storage, a wrapper that provides type-safe access to unitialized memory
  • exception, an extensible CRTP-based exception model with convenient macros to throw them
  • bitwise_enum_ops, a namespace containing operator overloads to perform bitwise operation on enums in a controlled manner
  • pred, a library of arithmetic and logic predicate generators
  • interruptible, an interface for an interruptible task-runner
  • worker, a proposed implementation of interruptible

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

Builds without warnings on Clang 18.1.8 and MSVC 19.40, in both debug and release modes.
The installed package is relocatable.