35 #ifndef _BLAZE_MATH_SPARSE_VECTORACCESSPROXY_H_
36 #define _BLAZE_MATH_SPARSE_VECTORACCESSPROXY_H_
88 template<
typename VT >
168 template<
typename VT >
174 if( element ==
sv_.end() )
185 template<
typename VT >
206 template<
typename VT >
209 const Iterator element( sv_.find( i_ ) );
210 if( element != sv_.end() &&
isDefault( element->value() ) )
211 sv_.erase( element );
230 template<
typename VT >
245 template<
typename VT >
246 template<
typename T >
261 template<
typename VT >
262 template<
typename T >
277 template<
typename VT >
278 template<
typename T >
293 template<
typename VT >
294 template<
typename T >
309 template<
typename VT >
310 template<
typename T >
332 template<
typename VT >
353 template<
typename VT >
356 const Iterator element( sv_.find( i_ ) );
358 return element->value();
369 template<
typename VT >
372 const Iterator element( sv_.find( i_ ) );
374 element->value() = value;
390 template<
typename VT1,
typename VT2 >
393 template<
typename VT,
typename T >
396 template<
typename T,
typename VT >
399 template<
typename VT1,
typename VT2 >
402 template<
typename VT,
typename T >
405 template<
typename T,
typename VT >
408 template<
typename VT1,
typename VT2 >
411 template<
typename VT,
typename T >
412 inline bool operator<( const VectorAccessProxy<VT>& lhs,
const T& rhs );
414 template<
typename T,
typename VT >
415 inline bool operator<( const T& lhs, const VectorAccessProxy<VT>& rhs );
417 template<
typename VT1,
typename VT2 >
420 template<
typename VT,
typename T >
423 template<
typename T,
typename VT >
426 template<
typename VT1,
typename VT2 >
429 template<
typename VT,
typename T >
430 inline bool operator<=( const VectorAccessProxy<VT>& lhs,
const T& rhs );
432 template<
typename T,
typename VT >
433 inline bool operator<=( const T& lhs, const VectorAccessProxy<VT>& rhs );
435 template<
typename VT1,
typename VT2 >
438 template<
typename VT,
typename T >
441 template<
typename T,
typename VT >
455 template<
typename VT1,
typename VT2 >
460 return ( static_cast<LhsReference>( lhs ) == static_cast<RhsReference>( rhs ) );
473 template<
typename VT,
typename T >
477 return ( static_cast<Reference>( lhs ) == rhs );
490 template<
typename T,
typename VT >
494 return ( lhs == static_cast<Reference>( rhs ) );
507 template<
typename VT1,
typename VT2 >
512 return ( static_cast<LhsReference>( lhs ) != static_cast<RhsReference>( rhs ) );
525 template<
typename VT,
typename T >
529 return ( static_cast<Reference>( lhs ) != rhs );
542 template<
typename T,
typename VT >
546 return ( lhs != static_cast<Reference>( rhs ) );
559 template<
typename VT1,
typename VT2 >
564 return ( static_cast<LhsReference>( lhs ) <
static_cast<RhsReference
>( rhs ) );
577 template<
typename VT,
typename T >
578 inline bool operator<( const VectorAccessProxy<VT>& lhs,
const T& rhs )
581 return ( static_cast<Reference>( lhs ) < rhs );
594 template<
typename T,
typename VT >
595 inline bool operator<( const T& lhs, const VectorAccessProxy<VT>& rhs )
598 return ( lhs < static_cast<Reference>( rhs ) );
611 template<
typename VT1,
typename VT2 >
616 return ( static_cast<LhsReference>( lhs ) > static_cast<RhsReference>( rhs ) );
629 template<
typename VT,
typename T >
633 return ( static_cast<Reference>( lhs ) > rhs );
646 template<
typename T,
typename VT >
650 return ( lhs > static_cast<Reference>( rhs ) );
663 template<
typename VT1,
typename VT2 >
668 return ( static_cast<LhsReference>( lhs ) <=
static_cast<RhsReference
>( rhs ) );
681 template<
typename VT,
typename T >
682 inline bool operator<=( const VectorAccessProxy<VT>& lhs,
const T& rhs )
685 return ( static_cast<Reference>( lhs ) <= rhs );
698 template<
typename T,
typename VT >
699 inline bool operator<=( const T& lhs, const VectorAccessProxy<VT>& rhs )
702 return ( lhs <= static_cast<Reference>( rhs ) );
715 template<
typename VT1,
typename VT2 >
720 return ( static_cast<LhsReference>( lhs ) >= static_cast<RhsReference>( rhs ) );
733 template<
typename VT,
typename T >
737 return ( static_cast<Reference>( lhs ) >= rhs );
750 template<
typename T,
typename VT >
754 return ( lhs >= static_cast<Reference>( rhs ) );
Reference get() const
Returning the value of the accessed sparse vector element.
Definition: VectorAccessProxy.h:354
bool isDefault(const DynamicMatrix< Type, SO > &m)
Returns whether the given dense matrix is in default state.
Definition: DynamicMatrix.h:4622
VT::Iterator Iterator
Iterator type of the accessed sparse vector.
Definition: VectorAccessProxy.h:97
Access proxy for sparse, N-dimensional vectors.The VectorAccessProxy provides safe access to the elem...
Definition: VectorAccessProxy.h:89
VT & sv_
Reference to the accessed sparse vector.
Definition: VectorAccessProxy.h:146
bool operator>(const NegativeAccuracy< A > &lhs, const T &rhs)
Greater-than comparison between a NegativeAccuracy object and a floating point value.
Definition: Accuracy.h:366
bool operator>=(const NegativeAccuracy< A > &, const T &rhs)
Greater-or-equal-than comparison between a NegativeAccuracy object and a floating point value...
Definition: Accuracy.h:442
VectorAccessProxy(VT &sv, size_t i)
Initialization constructor for a VectorAccessProxy.
Definition: VectorAccessProxy.h:169
size_t i_
Index of the accessed sparse vector element.
Definition: VectorAccessProxy.h:147
const ElementType & ConstReference
Reference type of the accessed constant element.
Definition: VectorAccessProxy.h:96
ElementType & Reference
Reference type of the accessed element.
Definition: VectorAccessProxy.h:95
VectorAccessProxy & operator=(const VectorAccessProxy &vap)
Copy assignment operator for VectorAccessProxy.
Definition: VectorAccessProxy.h:231
Type ElementType
Type of the sparse matrix elements.
Definition: CompressedMatrix.h:2382
VT VectorType
Type of the accessed sparse vector.
Definition: VectorAccessProxy.h:93
Header file for run time assertion macros.
Element * Iterator
Iterator over non-constant elements.
Definition: CompressedMatrix.h:2387
void set(ConstReference value) const
Setting the value of the accessed sparse vector element.
Definition: VectorAccessProxy.h:370
Header file for the isDefault shim.
VT::ElementType ElementType
Type of the accessed sparse vector element.
Definition: VectorAccessProxy.h:94
~VectorAccessProxy()
The destructor for VectorAccessProxy.
Definition: VectorAccessProxy.h:207
bool operator==(const NegativeAccuracy< A > &lhs, const T &rhs)
Equality comparison between a NegativeAccuracy object and a floating point value. ...
Definition: Accuracy.h:249
bool operator!=(const NegativeAccuracy< A > &lhs, const T &rhs)
Inequality comparison between a NegativeAccuracy object and a floating point value.
Definition: Accuracy.h:289
Header file for basic type definitions.
MatrixAccessProxy< This > Reference
Reference to a non-constant matrix value.
Definition: CompressedMatrix.h:2385
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.In case of an invalid run time expression, the program execution is terminated. The BLAZE_INTERNAL_ASSERT macro can be disabled by setting the BLAZE_USER_ASSERTION flag to zero or by defining NDEBUG during the compilation.
Definition: Assert.h:101
EnableIf< IsIntegral< T >, Set< T, sizeof(T)> >::Type::Type set(T value)
Sets all values in the vector to the given integral value.
Definition: Set.h:209