35 #ifndef _BLAZE_MATH_SPARSE_VECTORACCESSPROXY_H_
36 #define _BLAZE_MATH_SPARSE_VECTORACCESSPROXY_H_
94 template<
typename VT >
183 template<
typename VT >
189 if( element ==
sv_.end() )
200 template<
typename VT >
221 template<
typename VT >
225 if( element != sv_.end() &&
isDefault( element->value() ) )
226 sv_.erase( element );
245 template<
typename VT >
260 template<
typename VT >
261 template<
typename T >
276 template<
typename VT >
277 template<
typename T >
292 template<
typename VT >
293 template<
typename T >
308 template<
typename VT >
309 template<
typename T >
324 template<
typename VT >
325 template<
typename T >
347 template<
typename VT >
352 return element->value();
370 template<
typename VT >
389 template<
typename VT1,
typename VT2 >
392 template<
typename VT,
typename T >
395 template<
typename T,
typename VT >
398 template<
typename VT1,
typename VT2 >
401 template<
typename VT,
typename T >
404 template<
typename T,
typename VT >
407 template<
typename VT1,
typename VT2 >
410 template<
typename VT,
typename T >
411 inline bool operator<( const VectorAccessProxy<VT>& lhs,
const T& rhs );
413 template<
typename T,
typename VT >
414 inline bool operator<( const T& lhs, const VectorAccessProxy<VT>& rhs );
416 template<
typename VT1,
typename VT2 >
419 template<
typename VT,
typename T >
422 template<
typename T,
typename VT >
425 template<
typename VT1,
typename VT2 >
428 template<
typename VT,
typename T >
429 inline bool operator<=( const VectorAccessProxy<VT>& lhs,
const T& rhs );
431 template<
typename T,
typename VT >
432 inline bool operator<=( const T& lhs, const VectorAccessProxy<VT>& rhs );
434 template<
typename VT1,
typename VT2 >
437 template<
typename VT,
typename T >
440 template<
typename T,
typename VT >
443 template<
typename VT >
444 inline std::ostream& operator<<( std::ostream& os, const VectorAccessProxy<VT>& proxy );
457 template<
typename VT1,
typename VT2 >
460 return ( lhs.
get() == rhs.
get() );
473 template<
typename VT,
typename T >
476 return ( lhs.
get() == rhs );
489 template<
typename T,
typename VT >
492 return ( lhs == rhs.
get() );
505 template<
typename VT1,
typename VT2 >
508 return ( lhs.
get() != rhs.
get() );
521 template<
typename VT,
typename T >
524 return ( lhs.
get() != rhs );
537 template<
typename T,
typename VT >
540 return ( lhs != rhs.
get() );
553 template<
typename VT1,
typename VT2 >
556 return ( lhs.get() < rhs.get() );
569 template<
typename VT,
typename T >
570 inline bool operator<( const VectorAccessProxy<VT>& lhs,
const T& rhs )
572 return ( lhs.get() < rhs );
585 template<
typename T,
typename VT >
586 inline bool operator<( const T& lhs, const VectorAccessProxy<VT>& rhs )
588 return ( lhs < rhs.get() );
601 template<
typename VT1,
typename VT2 >
604 return ( lhs.
get() > rhs.
get() );
617 template<
typename VT,
typename T >
620 return ( lhs.
get() > rhs );
633 template<
typename T,
typename VT >
636 return ( lhs > rhs.
get() );
649 template<
typename VT1,
typename VT2 >
652 return ( lhs.get() <= rhs.get() );
665 template<
typename VT,
typename T >
666 inline bool operator<=( const VectorAccessProxy<VT>& lhs,
const T& rhs )
668 return ( lhs.get() <= rhs );
681 template<
typename T,
typename VT >
682 inline bool operator<=( const T& lhs, const VectorAccessProxy<VT>& rhs )
684 return ( lhs <= rhs.get() );
697 template<
typename VT1,
typename VT2 >
700 return ( lhs.
get() >= rhs.
get() );
713 template<
typename VT,
typename T >
716 return ( lhs.
get() >= rhs );
729 template<
typename T,
typename VT >
732 return ( lhs >= rhs.
get() );
745 template<
typename VT >
746 inline std::ostream& operator<<( std::ostream& os, const VectorAccessProxy<VT>& proxy )
748 return os << proxy.get();
764 template<
typename VT >
765 inline void reset(
const VectorAccessProxy<VT>& proxy );
767 template<
typename VT >
768 inline void clear(
const VectorAccessProxy<VT>& proxy );
770 template<
typename VT >
771 inline bool isDefault(
const VectorAccessProxy<VT>& proxy );
773 template<
typename VT >
774 inline void swap(
const VectorAccessProxy<VT>& a,
const VectorAccessProxy<VT>& b ) ;
776 template<
typename VT,
typename T >
777 inline void swap(
const VectorAccessProxy<VT>& a, T& b ) ;
779 template<
typename T,
typename VT >
780 inline void swap( T& a,
const VectorAccessProxy<VT>& v ) ;
792 template<
typename VT >
809 template<
typename VT >
829 template<
typename VT >
848 template<
typename VT >
867 template<
typename VT,
typename T >
886 template<
typename T,
typename VT >
void swap(SymmetricMatrix< MT, SO, DF, NF > &a, SymmetricMatrix< MT, SO, DF, NF > &b)
Swapping the contents of two matrices.
Definition: SymmetricMatrix.h:195
Proxy base class.The Proxy class is a base class for all proxy classes within the Blaze library that ...
Definition: Proxy.h:99
Access proxy for sparse, N-dimensional vectors.The VectorAccessProxy provides safe access to the elem...
Definition: VectorAccessProxy.h:95
VT & sv_
Reference to the accessed sparse vector.
Definition: VectorAccessProxy.h:148
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:184
size_t i_
Index of the accessed sparse vector element.
Definition: VectorAccessProxy.h:149
Header file for the clear shim.
void swap(CompressedMatrix< Type, SO > &a, CompressedMatrix< Type, SO > &b)
Swapping the contents of two compressed matrices.
Definition: CompressedMatrix.h:4754
BLAZE_ALWAYS_INLINE void clear(const NonNumericProxy< MT > &proxy)
Clearing the represented element.
Definition: NonNumericProxy.h:854
RepresentedType & RawReference
Raw reference to the represented element.
Definition: VectorAccessProxy.h:100
#define BLAZE_CONSTRAINT_MUST_BE_SPARSE_VECTOR_TYPE(T)
Constraint on the data type.In case the given data type T is not a sparse, N-dimensional vector type...
Definition: SparseVector.h:79
VectorAccessProxy & operator=(const VectorAccessProxy &vap)
Copy assignment operator for VectorAccessProxy.
Definition: VectorAccessProxy.h:246
Type ElementType
Type of the sparse matrix elements.
Definition: CompressedMatrix.h:2476
Constraint on the data type.
Header file for run time assertion macros.
Header file for the Proxy class.
Header file for the reset shim.
Element * Iterator
Iterator over non-constant elements.
Definition: CompressedMatrix.h:2481
Header file for the isDefault shim.
BLAZE_ALWAYS_INLINE bool isDefault(const NonNumericProxy< MT > &proxy)
Returns whether the represented element is in default state.
Definition: NonNumericProxy.h:874
BLAZE_ALWAYS_INLINE void reset(const NonNumericProxy< MT > &proxy)
Resetting the represented element to the default initial values.
Definition: NonNumericProxy.h:833
RawReference get() const
Returning the value of the accessed sparse vector element.
Definition: VectorAccessProxy.h:348
VT::ElementType RepresentedType
Type of the represented sparse vector element.
Definition: VectorAccessProxy.h:99
~VectorAccessProxy()
The destructor for VectorAccessProxy.
Definition: VectorAccessProxy.h:222
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.
#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
void * operator&() const
Address operator (private & undefined)