From 77d83f5b515f2ee4bde121a2b3eab0bb22ca86a2 Mon Sep 17 00:00:00 2001 From: Justin Carpentier <justin.carpentier@inria.fr> Date: Tue, 25 Feb 2020 16:12:42 +0100 Subject: [PATCH] core: add is_aligned helper --- CMakeLists.txt | 1 + include/eigenpy/eigen-allocator.hpp | 5 ++--- include/eigenpy/utils/is-aligned.hpp | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 include/eigenpy/utils/is-aligned.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index d65f9d58..ea73ef40 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,6 +74,7 @@ SEARCH_FOR_BOOST() SET(${PROJECT_NAME}_UTILS_HEADERS include/eigenpy/utils/scalar-name.hpp include/eigenpy/utils/is-approx.hpp + include/eigenpy/utils/is-aligned.hpp ) SET(${PROJECT_NAME}_SOLVERS_HEADERS diff --git a/include/eigenpy/eigen-allocator.hpp b/include/eigenpy/eigen-allocator.hpp index d6fdf208..b5f92c69 100644 --- a/include/eigenpy/eigen-allocator.hpp +++ b/include/eigenpy/eigen-allocator.hpp @@ -8,8 +8,7 @@ #include "eigenpy/fwd.hpp" #include "eigenpy/map.hpp" #include "eigenpy/scalar-conversion.hpp" - -#include <boost/align/is_aligned.hpp> +#include "eigenpy/utils/is-aligned.hpp" namespace eigenpy { @@ -233,7 +232,7 @@ namespace eigenpy if(Options != Eigen::Unaligned) // we need to check whether the memory is correctly aligned and composed of a continuous segment { void * data_ptr = PyArray_DATA(pyArray); - if(!PyArray_ISONESEGMENT(pyArray) || !boost::alignment::is_aligned(Options,data_ptr)) + if(!PyArray_ISONESEGMENT(pyArray) || !is_aligned(data_ptr,Option)) need_to_allocate |= true; } diff --git a/include/eigenpy/utils/is-aligned.hpp b/include/eigenpy/utils/is-aligned.hpp new file mode 100644 index 00000000..e8769115 --- /dev/null +++ b/include/eigenpy/utils/is-aligned.hpp @@ -0,0 +1,16 @@ +// +// Copyright (c) 2020 INRIA +// + +#ifndef __eigenpy_utils_is_aligned_hpp__ +#define __eigenpy_utils_is_aligned_hpp__ + +namespace eigenpy +{ + inline bool is_aligned(void * ptr, std::size_t alignment) + { + return (reinterpret_cast<std::size_t>(ptr) & (alignment - 1)) == 0; + } +} + +#endif -- GitLab