// This file is part of Eigen, a lightweight C++ template library // for linear algebra. // // Copyright (C) 2006-2010 Benoit Jacob <[email protected]> // // This Source Code Form is subject to the terms of the Mozilla // Public License v. 2.0. If a copy of the MPL was not distributed // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. #ifndef EIGEN_DENSECOEFFSBASE_H #define EIGEN_DENSECOEFFSBASE_H // IWYU pragma: private #include "./InternalHeaderCheck.h" namespace Eigen { namespace internal { template <typename T> struct add_const_on_value_type_if_arithmetic { … }; } // namespace internal /** \brief Base class providing read-only coefficient access to matrices and arrays. * \ingroup Core_Module * \tparam Derived Type of the derived class * * \note #ReadOnlyAccessors Constant indicating read-only access * * This class defines the \c operator() \c const function and friends, which can be used to read specific * entries of a matrix or array. * * \sa DenseCoeffsBase<Derived, WriteAccessors>, DenseCoeffsBase<Derived, DirectAccessors>, * \ref TopicClassHierarchy */ DenseCoeffsBase<Derived, ReadOnlyAccessors>; /** \brief Base class providing read/write coefficient access to matrices and arrays. * \ingroup Core_Module * \tparam Derived Type of the derived class * * \note #WriteAccessors Constant indicating read/write access * * This class defines the non-const \c operator() function and friends, which can be used to write specific * entries of a matrix or array. This class inherits DenseCoeffsBase<Derived, ReadOnlyAccessors> which * defines the const variant for reading specific entries. * * \sa DenseCoeffsBase<Derived, DirectAccessors>, \ref TopicClassHierarchy */ DenseCoeffsBase<Derived, WriteAccessors>; /** \brief Base class providing direct read-only coefficient access to matrices and arrays. * \ingroup Core_Module * \tparam Derived Type of the derived class * * \note #DirectAccessors Constant indicating direct access * * This class defines functions to work with strides which can be used to access entries directly. This class * inherits DenseCoeffsBase<Derived, ReadOnlyAccessors> which defines functions to access entries read-only using * \c operator() . * * \sa \blank \ref TopicClassHierarchy */ DenseCoeffsBase<Derived, DirectAccessors>; /** \brief Base class providing direct read/write coefficient access to matrices and arrays. * \ingroup Core_Module * \tparam Derived Type of the derived class * * \note #DirectWriteAccessors Constant indicating direct access * * This class defines functions to work with strides which can be used to access entries directly. This class * inherits DenseCoeffsBase<Derived, WriteAccessors> which defines functions to access entries read/write using * \c operator(). * * \sa \blank \ref TopicClassHierarchy */ DenseCoeffsBase<Derived, DirectWriteAccessors>; namespace internal { template <int Alignment, typename Derived, bool JustReturnZero> struct first_aligned_impl { … }; first_aligned_impl<Alignment, Derived, false>; /** \internal \returns the index of the first element of the array stored by \a m that is properly aligned with respect * to \a Alignment for vectorization. * * \tparam Alignment requested alignment in Bytes. * * There is also the variant first_aligned(const Scalar*, Integer) defined in Memory.h. See it for more * documentation. */ template <int Alignment, typename Derived> static inline Index first_aligned(const DenseBase<Derived>& m) { … } template <typename Derived> static inline Index first_default_aligned(const DenseBase<Derived>& m) { … } template <typename Derived, bool HasDirectAccess = has_direct_access<Derived>::ret> struct inner_stride_at_compile_time { … }; inner_stride_at_compile_time<Derived, false>; template <typename Derived, bool HasDirectAccess = has_direct_access<Derived>::ret> struct outer_stride_at_compile_time { … }; outer_stride_at_compile_time<Derived, false>; } // end namespace internal } // end namespace Eigen #endif // EIGEN_DENSECOEFFSBASE_H