Skip to content

More slam modernization, including traits classes and aliases#1904

Open
kennyweiss wants to merge 16 commits into
developfrom
feature/kweiss/slam-modernization
Open

More slam modernization, including traits classes and aliases#1904
kennyweiss wants to merge 16 commits into
developfrom
feature/kweiss/slam-modernization

Conversation

@kennyweiss

Copy link
Copy Markdown
Member

Summary

  • This PR is a follow-up to Modernizes slam for c++17 #1892 and continues to modernize slam in preparation for C++20
  • It adds traits classes to slam -- is_set_like, is_relation_like and is_map_like -- which will map to concepts
  • It makes StaticRelation and VariableRelation trivially copyable by inheriting from ConcreteInterface instead of VirtualInterface
  • It makes axom::Array and axom::ArrayView the default backing buffer type for slam's sets, relations and maps. The default was previously std::vector, so this might require some minor changes from users. The std::vector backing is still available through an explicit STLVectorIndirection policy
  • It adds alias types for common set and relation configurations. This greatly simplifies the setup for common cases. I have updated many examples and usages of slam throughout Axom to this type
  • This branch contains lots of documentation updates, and reworks the basic example in the user docs (UserDocs.cpp)

@kennyweiss kennyweiss self-assigned this Jul 7, 2026
@kennyweiss kennyweiss added enhancement New feature or request Slam Issues related to Axom's 'slam' component Documentation Issues related to documentation maintenance Issues related to code maintenance usability Related to code usability labels Jul 7, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The changes to bump are unrelated to this branch and were required to fix the MSVC compilation.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note: The changes to MIR in this branch are to the unused "reference" subdirectory, which we're keeping until we can incorporate some missing features.

@kennyweiss
kennyweiss force-pushed the feature/kweiss/slam-modernization branch from 93c7eed to b23ae05 Compare July 7, 2026 07:16

@BradWhitlock BradWhitlock left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @kennyweiss. It looks like types are easier to write out now. Nice doc improvements too.

kennyweiss and others added 13 commits July 10, 2026 11:26
…lations and maps

These will be converted into concepts when we Axom transitions to C++20.
And adds checks that the iterators are random_access_iterators.
And uses them in slam examples and usages throughout Axom.
…r-based indirection

Also, increase usage of the new slam alias types.
Most uses of slam::Map within Axom use the default configurations and the more complex usages
were not sufficiently similar to warrant shared aliases.
Several functions were templated, but the implementations were left in the cpp file.
This moves them to the hpp file.
@kennyweiss
kennyweiss force-pushed the feature/kweiss/slam-modernization branch from b23ae05 to 687fdb6 Compare July 10, 2026 18:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Documentation Issues related to documentation enhancement New feature or request maintenance Issues related to code maintenance Slam Issues related to Axom's 'slam' component usability Related to code usability

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants