Program Listing for File fwd.hpp

Return to documentation for file (include/nanoeigenpy/fwd.hpp)

#pragma once

#include "nanoeigenpy/config.hpp"
#include "nanoeigenpy/id.hpp"
#include "nanoeigenpy/utils/helpers.hpp"
#include <nanobind/nanobind.h>

#include <Eigen/Core>
#include <Eigen/Sparse>
#include <Eigen/Geometry>
#include <Eigen/IterativeLinearSolvers>
#include <Eigen/Jacobi>

#if defined(__clang__)
#define NANOEIGENPY_CLANG_COMPILER
#elif defined(__GNUC__)
#define NANOEIGENPY_GCC_COMPILER
#elif defined(_MSC_VER)
#define NANOEIGENPY_MSVC_COMPILER
#endif

#if __has_include(<cholmod.h>)
#define NANOEIGENPY_HAS_CHOLMOD
#endif

#if __has_include(<Accelerate.h>)
#define NANOEIGENPY_HAS_ACCELERATE
#endif

#if (__cplusplus >= 202002L || (defined(_MSVC_LAG) && _MSVC_LANG >= 202002L))
#define NANOEIGENPY_WITH_CXX20_SUPPORT
#endif

#define NANOEIGENPY_UNUSED_TYPE(Type) (void)(Type*)(NULL)

#define NANOEIGENPY_MAKE_TYPEDEFS(Type, Options, TypeSuffix, Size, SizeSuffix) \
                                               \
  typedef Eigen::Matrix<Type, Size, Size, Options>                             \
      Matrix##SizeSuffix##TypeSuffix;                                          \
                                               \
  typedef Eigen::Matrix<Type, Size, 1> Vector##SizeSuffix##TypeSuffix;         \
                                               \
  typedef Eigen::Matrix<Type, 1, Size> RowVector##SizeSuffix##TypeSuffix;

namespace nanoeigenpy {
namespace nb = nanobind;
}  // namespace nanoeigenpy