Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[std-map] add more general visitor for map types, fix non-default-constructible types #504

Merged
merged 6 commits into from
Sep 18, 2024

Conversation

ManifoldFR
Copy link
Member

  • test boost::unordered_map
  • pull StdMapPythonVisitor out of eigenpy::python namespace (shouldn't exist, add using-decl for backwards compatibility)

+ test boost::unordered_map
+ pull StdMapPythonVisitor out of eigenpy::python namespace (shouldn't exist, add using-decl for backwards compatibility)
@ManifoldFR
Copy link
Member Author

@edantec This generalises your previous PR in release 3.9.0, and fixes a namespace issue

@ManifoldFR
Copy link
Member Author

ManifoldFR commented Sep 17, 2024

Interesting point in the latest commit: Boost.Python's map_indexing_suite does something annoying which is to assume the value_type in a Container type (a std::pair<key_type, data_type> for map types) is default-constructible (without doing bp::no_init in the bp::class_ call which exposes the type). It also does that for vector_indexing_suite, and in both cases the set_item() does something like this:

container[i] = v;

which is wrong. This is a Boost.Python design mistake I guess. I ended up overriding the indexing suite into a policy which adds bp::no_init and fixes the set_item.

@ManifoldFR ManifoldFR changed the title [std-map] add more general visitor for map types [std-map] add more general visitor for map types, fix non-default-constructible types Sep 17, 2024
@ManifoldFR ManifoldFR merged commit 694d996 into stack-of-tasks:devel Sep 18, 2024
34 checks passed
@ManifoldFR ManifoldFR deleted the topic/generic-maps branch September 18, 2024 13:59
nim65s added a commit to nim65s/robotpkg that referenced this pull request Oct 9, 2024
    ## [3.10.0] - 2024-09-26

    ### Added

    - `GenericMapPythonVisitor`/`StdMapPythonVisitor` can now take an extra visitor argument in the `expose()` method, similar to `StdVectorPythonVisitor`

    ### Changed

    - Move `GenericMapPythonVisitor` to its own header `eigenpy/map.hpp`
    - Rename `overload_base_get_item_for_std_map` to `overload_base_get_item_for_map`, move out of `eigenpy::details` namespace
    - Move `EmptyPythonVisitor` to new header `eigenpy/utils/empty-visitor.hpp`

    ## [3.9.1] - 2024-09-19

    ### Added

    - Add test returning reference of std::pair stack-of-tasks/eigenpy#503
    - Add more general visitor `GenericMapPythonVisitor` for map types test `boost::unordered_map<std::string, int>` stack-of-tasks/eigenpy#504
    - Support for non-[default-contructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible) types in map types stack-of-tasks/eigenpy#504
    - Add type_info helpers stack-of-tasks/eigenpy#502
    - Add NumPy 2 support stack-of-tasks/eigenpy#496

    ### Changed

    - Move `StdMapPythonVisitor` out of `eigenpy::python` namespace, which was a mistake stack-of-tasks/eigenpy#504

    ## [3.9.0] - 2024-08-31

    ### Changed
    - The `exposeStdVectorEigenSpecificType()` template function now takes the vector allocator as a template parameter stack-of-tasks/eigenpy#500

    ### Added
    - Add bp::dist to std::map converter stack-of-tasks/eigenpy#499

    ## [3.8.2] - 2024-08-26

    ### Fixed
    - Fix function signature on Windows stack-of-tasks/eigenpy#494

    ## [3.8.1] - 2024-08-25

    ### Fixed
    - Fix compatibility issue with NumPy 2.x on Windows stack-of-tasks/eigenpy#492

    ## [3.8.0] - 2024-08-14

    ### Added
    - Add compatibility with jrl-cmakemodules workspace stack-of-tasks/eigenpy#485
    - Remove support of Python 3.7 stack-of-tasks/eigenpy#490

    ### Fixed
    - Remove CMake CMP0167 warnings stack-of-tasks/eigenpy#487
    - Fix compilation error on armhf stack-of-tasks/eigenpy#488
nim65s added a commit to nim65s/robotpkg that referenced this pull request Oct 11, 2024
    ## [3.10.0] - 2024-09-26

    ### Added

    - `GenericMapPythonVisitor`/`StdMapPythonVisitor` can now take an extra visitor argument in the `expose()` method, similar to `StdVectorPythonVisitor`

    ### Changed

    - Move `GenericMapPythonVisitor` to its own header `eigenpy/map.hpp`
    - Rename `overload_base_get_item_for_std_map` to `overload_base_get_item_for_map`, move out of `eigenpy::details` namespace
    - Move `EmptyPythonVisitor` to new header `eigenpy/utils/empty-visitor.hpp`

    ## [3.9.1] - 2024-09-19

    ### Added

    - Add test returning reference of std::pair stack-of-tasks/eigenpy#503
    - Add more general visitor `GenericMapPythonVisitor` for map types test `boost::unordered_map<std::string, int>` stack-of-tasks/eigenpy#504
    - Support for non-[default-contructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible) types in map types stack-of-tasks/eigenpy#504
    - Add type_info helpers stack-of-tasks/eigenpy#502
    - Add NumPy 2 support stack-of-tasks/eigenpy#496

    ### Changed

    - Move `StdMapPythonVisitor` out of `eigenpy::python` namespace, which was a mistake stack-of-tasks/eigenpy#504

    ## [3.9.0] - 2024-08-31

    ### Changed
    - The `exposeStdVectorEigenSpecificType()` template function now takes the vector allocator as a template parameter stack-of-tasks/eigenpy#500

    ### Added
    - Add bp::dist to std::map converter stack-of-tasks/eigenpy#499

    ## [3.8.2] - 2024-08-26

    ### Fixed
    - Fix function signature on Windows stack-of-tasks/eigenpy#494

    ## [3.8.1] - 2024-08-25

    ### Fixed
    - Fix compatibility issue with NumPy 2.x on Windows stack-of-tasks/eigenpy#492

    ## [3.8.0] - 2024-08-14

    ### Added
    - Add compatibility with jrl-cmakemodules workspace stack-of-tasks/eigenpy#485
    - Remove support of Python 3.7 stack-of-tasks/eigenpy#490

    ### Fixed
    - Remove CMake CMP0167 warnings stack-of-tasks/eigenpy#487
    - Fix compilation error on armhf stack-of-tasks/eigenpy#488
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants