Skip to content

Combine MapAdapter with MapConstAdapter

Choose a tag to compare

@luk036 luk036 released this 28 Nov 07:34
· 89 commits to master since this release

Full Changelog: 1.1...1.1.2

mywheel-cpp v1.2.0 πŸš€ – Big Refactor & New Toys!

✨ Major Highlights

  • Completely redesigned core data structures with modern C++20 style adapters 🎨

  • Introduced powerful new containers:

    • MapAdapter – turn any key-value container into a real map-like interface with operator[], at(), contains(), size()
    • MapConstAdapter – read-only view of any associative container
    • Cycle – a circular linked list that lets you iterate forever (perfect for round-robin, game loops, etc.) ♻️
    • List – custom doubly-linked list with sentinel nodes (cleaner & faster than std::list in many cases)
    • ShiftArray – fixed-size array with O(1) rotate/shift operations
  • Merged MapAdapter and MapConstAdapter into a cleaner, more consistent design

  • Added extensive Doxygen documentation for every public class and method πŸ“–

  • Added stress tests & property-based tests (100 000+ iterations) for all new containers

New Features

  • Cycle now supports exclusion ranges – skip parts of the cycle temporarily
  • All adapters work with std::vector, std::array, raw arrays, and even third-party containers
  • Full iterator + range-for support on every new container
  • MapAdapter provides both mutable and const subscript overloads safely

Build & CI

  • Updated CMake minimum to 3.15
  • Added -DMYWHEEL_BUILD_TESTS=ON option
  • CI now runs massive stress tests on every PR

Other Improvements

  • Cleaner internal includes & forward declarations
  • Better error messages in tests
  • Removed deprecated code

Huge thanks to GEMINI CLI for documentation, stress-test generation, and many cleanups!

Upgrade now and enjoy faster, safer, more expressive containers!

Grab v1.2.0 today! πŸŽ‰