10 #ifndef EIGEN_SPARSE_MAP_H 
   11 #define EIGEN_SPARSE_MAP_H 
   17 template<
typename MatScalar, 
int MatOptions, 
typename MatIndex, 
int Options, 
typename Str
ideType>
 
   19   : 
public traits<SparseMatrix<MatScalar,MatOptions,MatIndex> >
 
   28 template<
typename MatScalar, 
int MatOptions, 
typename MatIndex, 
int Options, 
typename Str
ideType>
 
   30   : 
public traits<SparseMatrix<MatScalar,MatOptions,MatIndex> >
 
   41 template<
typename Derived,
 
   49 template<
typename Derived>
 
   57     enum { IsRowMajor = Base::IsRowMajor };
 
   58     using Base::operator=;
 
   79     inline Index rows()
 const { 
return IsRowMajor ? m_outerSize : m_innerSize; }
 
   81     inline Index cols()
 const { 
return IsRowMajor ? m_innerSize : m_outerSize; }
 
  110       Index start = m_outerIndex[outer];
 
  111       Index end = isCompressed() ? m_outerIndex[outer+1] : start + m_innerNonZeros[outer];
 
  114       else if (
end>0 && inner==m_innerIndices[
end-1])
 
  115         return m_values[
end-1];
 
  119       const StorageIndex* r = std::lower_bound(&m_innerIndices[start],&m_innerIndices[
end-1],inner);
 
  120       const Index id = r-&m_innerIndices[0];
 
  121       return ((*r==inner) && (
id<
end)) ? m_values[
id] : 
Scalar(0);
 
  127         m_innerIndices(innerIndexPtr), m_values(valuePtr), m_innerNonZeros(innerNonZerosPtr)
 
  133         m_innerIndices(innerIndexPtr), m_values(valuePtr), m_innerNonZeros(0)
 
  147 template<
typename Derived>
 
  157     enum { IsRowMajor = Base::IsRowMajor };
 
  159     using Base::operator=;
 
  165     using Base::valuePtr;
 
  166     using Base::innerIndexPtr;
 
  167     using Base::outerIndexPtr;
 
  168     using Base::innerNonZeroPtr;
 
  185       Index start = Base::m_outerIndex[outer];
 
  186       Index end = Base::isCompressed() ? Base::m_outerIndex[outer+1] : start + Base::m_innerNonZeros[outer];
 
  187       eigen_assert(
end>=start && 
"you probably called coeffRef on a non finalized matrix");
 
  188       eigen_assert(
end>start && 
"coeffRef cannot be called on a zero coefficient");
 
  189       StorageIndex* r = std::lower_bound(&Base::m_innerIndices[start],&Base::m_innerIndices[
end],inner);
 
  190       const Index id = r - &Base::m_innerIndices[0];
 
  191       eigen_assert((*r==inner) && (
id<
end) && 
"coeffRef cannot be called on a zero coefficient");
 
  192       return const_cast<Scalar*
>(Base::m_values)[
id];
 
  197       : 
Base(
rows, 
cols, nnz, outerIndexPtr, innerIndexPtr, valuePtr, innerNonZerosPtr)
 
  202       : 
Base(
size, nnz, innerIndexPtr, valuePtr)
 
  220 #ifndef EIGEN_PARSED_BY_DOXYGEN 
  221 template<
typename MatScalar, 
int MatOptions, 
typename MatIndex, 
int Options, 
typename Str
ideType>
 
  223   : 
public SparseMapBase<Map<SparseMatrix<MatScalar,MatOptions,MatIndex>, Options, StrideType> >
 
  225 template<typename SparseMatrixType>
 
  226 class 
Map<SparseMatrixType>
 
  233     enum { IsRowMajor = Base::IsRowMajor };
 
  246                StorageIndex* innerIndexPtr, 
Scalar* valuePtr, StorageIndex* innerNonZerosPtr = 0)
 
  247       : 
Base(
rows, 
cols, nnz, outerIndexPtr, innerIndexPtr, valuePtr, innerNonZerosPtr)
 
  249 #ifndef EIGEN_PARSED_BY_DOXYGEN 
  254 template<
typename MatScalar, 
int MatOptions, 
typename MatIndex, 
int Options, 
typename Str
ideType>
 
  256   : 
public SparseMapBase<Map<const SparseMatrix<MatScalar,MatOptions,MatIndex>, Options, StrideType> >
 
  261     enum { IsRowMajor = Base::IsRowMajor };
 
  271                const StorageIndex* innerIndexPtr, 
const Scalar* valuePtr, 
const StorageIndex* innerNonZerosPtr = 0)
 
  272       : 
Base(
rows, 
cols, nnz, outerIndexPtr, innerIndexPtr, valuePtr, innerNonZerosPtr)
 
  281 template<
typename MatScalar, 
int MatOptions, 
typename MatIndex, 
int Options, 
typename Str
ideType>
 
  283   : 
evaluator<SparseCompressedBase<Map<SparseMatrix<MatScalar,MatOptions,MatIndex>, Options, StrideType> > >
 
  291 template<
typename MatScalar, 
int MatOptions, 
typename MatIndex, 
int Options, 
typename Str
ideType>
 
  293   : 
evaluator<SparseCompressedBase<Map<const SparseMatrix<MatScalar,MatOptions,MatIndex>, Options, StrideType> > >
 
  305 #endif // EIGEN_SPARSE_MAP_H