Eigen::internal::inner_sort_impl< Derived, Comp, IsVector > Struct Template Reference

#include <SparseCompressedBase.h>

Public Types

typedef Derived::Scalar Scalar
 
typedef Derived::StorageIndex StorageIndex
 

Static Public Member Functions

static void run (SparseCompressedBase< Derived > &obj, Index begin, Index end)
 
static Index check (const SparseCompressedBase< Derived > &obj, Index begin, Index end)
 

Member Typedef Documentation

◆ Scalar

template<typename Derived , class Comp , bool IsVector>
typedef Derived::Scalar Eigen::internal::inner_sort_impl< Derived, Comp, IsVector >::Scalar

◆ StorageIndex

template<typename Derived , class Comp , bool IsVector>
typedef Derived::StorageIndex Eigen::internal::inner_sort_impl< Derived, Comp, IsVector >::StorageIndex

Member Function Documentation

◆ check()

template<typename Derived , class Comp , bool IsVector>
static Index Eigen::internal::inner_sort_impl< Derived, Comp, IsVector >::check ( const SparseCompressedBase< Derived > &  obj,
Index  begin,
Index  end 
)
inlinestatic
513  {
514  const bool is_compressed = obj.isCompressed();
515  for (Index outer = begin; outer < end; outer++) {
516  Index begin_offset = obj.outerIndexPtr()[outer];
517  Index end_offset = is_compressed ? obj.outerIndexPtr()[outer + 1] : (begin_offset + obj.innerNonZeroPtr()[outer]);
518  const StorageIndex* begin_it = obj.innerIndexPtr() + begin_offset;
519  const StorageIndex* end_it = obj.innerIndexPtr() + end_offset;
520  bool is_sorted = std::is_sorted(begin_it, end_it, Comp());
521  if (!is_sorted) return outer;
522  }
523  return end;
524  }
static constexpr lastp1_t end
Definition: IndexedViewHelper.h:79
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
bool is_sorted(const T &mat)
Definition: sparse_permutations.cpp:35
Derived::StorageIndex StorageIndex
Definition: SparseCompressedBase.h:502

References Eigen::placeholders::end, Eigen::SparseCompressedBase< Derived >::innerIndexPtr(), Eigen::SparseCompressedBase< Derived >::innerNonZeroPtr(), is_sorted(), Eigen::SparseCompressedBase< Derived >::isCompressed(), and Eigen::SparseCompressedBase< Derived >::outerIndexPtr().

Referenced by Eigen::SparseCompressedBase< Derived >::innerIndicesAreSorted().

◆ run()

template<typename Derived , class Comp , bool IsVector>
static void Eigen::internal::inner_sort_impl< Derived, Comp, IsVector >::run ( SparseCompressedBase< Derived > &  obj,
Index  begin,
Index  end 
)
inlinestatic
503  {
504  const bool is_compressed = obj.isCompressed();
505  for (Index outer = begin; outer < end; outer++) {
506  Index begin_offset = obj.outerIndexPtr()[outer];
507  Index end_offset = is_compressed ? obj.outerIndexPtr()[outer + 1] : (begin_offset + obj.innerNonZeroPtr()[outer]);
508  CompressedStorageIterator<Scalar, StorageIndex> begin_it(begin_offset, obj.innerIndexPtr(), obj.valuePtr());
509  CompressedStorageIterator<Scalar, StorageIndex> end_it(end_offset, obj.innerIndexPtr(), obj.valuePtr());
510  std::sort(begin_it, end_it, Comp());
511  }
512  }

References Eigen::placeholders::end, Eigen::SparseCompressedBase< Derived >::innerIndexPtr(), Eigen::SparseCompressedBase< Derived >::innerNonZeroPtr(), Eigen::SparseCompressedBase< Derived >::isCompressed(), Eigen::SparseCompressedBase< Derived >::outerIndexPtr(), and Eigen::SparseCompressedBase< Derived >::valuePtr().

Referenced by Eigen::SparseCompressedBase< Derived >::sortInnerIndices().


The documentation for this struct was generated from the following file: