34 #ifndef CARTODATA_VOLUME_VOLUMEREF_D_OPERATORS_H 35 #define CARTODATA_VOLUME_VOLUMEREF_D_OPERATORS_H 49 #ifdef CARTO_VOLUME_AUTO_DEREFERENCE 59 return (*this)->all();
66 return (*this)->any();
69 #if 0 // would change rc_ptr cast operator (equivalent to get()) 74 return (
bool)(**this);
82 return (*this)->min();
89 return (*this)->max();
96 return (*this)->sum();
104 template <
typename T>
108 (*this)->fill(value);
111 template <
typename T>
124 template <
typename T>
128 return ::carto::copy<T,T>( *this );
131 template <
typename T>
132 template <
typename OUTP>
136 return ::carto::copy<OUTP,T>( *this );
139 template <
typename T>
143 return ::carto::deepcopy<T,T>( *this );
146 template <
typename T>
147 template <
typename OUTP>
151 return ::carto::deepcopy<OUTP,T>( *this );
154 template <
typename T>
158 return ::carto::copyStructure<T,T>( *this );
161 template <
typename T>
162 template <
typename OUTP>
166 return ::carto::copyStructure<OUTP,T>( *this );
169 template <
typename T>
170 template <
typename OUTP>
174 return ::carto::deepcopy<OUTP,T>( *this );
183 template <
typename T,
typename U>
192 template <
typename T,
typename U>
201 template <
typename T,
typename U>
210 template <
typename T,
typename U>
219 template <
typename T,
typename U>
228 template <
typename T,
typename U>
239 template <
typename T,
typename U>
248 template <
typename T,
typename U>
257 template <
typename T,
typename U>
266 template <
typename T,
typename U>
275 template <
typename T,
typename U>
284 template <
typename T,
typename U>
295 template <
typename T,
typename U>
304 template <
typename T,
typename U>
313 template <
typename T,
typename U>
322 template <
typename T,
typename U>
331 template <
typename T,
typename U>
340 template <
typename T,
typename U>
351 template <
typename T,
typename U>
359 template <
typename T,
typename U>
367 template <
typename T,
typename U>
375 template <
typename T,
typename U>
383 template <
typename T,
typename U>
391 template <
typename T,
typename U>
401 #if 0 // Would change rc_ptr behaviour 402 template <
typename T,
typename U>
411 template <
typename T,
typename U>
421 template <
typename T,
typename U>
430 template <
typename T,
typename U>
439 template <
typename T,
typename U>
448 template <
typename T,
typename U>
463 template <
typename T>
470 template <
typename T>
477 template <
typename T>
488 template <
typename T,
typename U>
496 template <
typename T,
typename U>
504 template <
typename T,
typename U>
512 template <
typename T,
typename U>
520 template <
typename T,
typename U>
528 template <
typename T,
typename U>
536 template <
typename T,
typename U>
544 template <
typename T,
typename U>
552 template <
typename T,
typename U>
561 template <
typename T,
typename U>
572 template <
typename T,
typename U>
580 template <
typename T,
typename U>
588 template <
typename T,
typename U>
596 template <
typename T,
typename U>
606 template <
typename T,
typename U>
614 template <
typename T,
typename U>
622 template <
typename T,
typename U>
630 template <
typename T,
typename U>
638 template <
typename T,
typename U>
646 template <
typename T,
typename U>
654 template <
typename T,
typename U>
662 template <
typename T,
typename U>
670 template <
typename T,
typename U>
679 template <
typename T,
typename U>
690 template <
typename T,
typename U>
698 template <
typename T,
typename U>
706 template <
typename T,
typename U>
714 template <
typename T,
typename U>
722 template <
typename T,
typename U>
730 template <
typename T,
typename U>
738 template <
typename T,
typename U>
746 template <
typename T,
typename U>
754 template <
typename T,
typename U>
761 template <
typename T,
typename U>
771 template <
typename T,
typename U>
779 template <
typename T,
typename U>
787 template <
typename T,
typename U>
795 template <
typename T,
typename U>
803 template <
typename T,
typename U>
811 template <
typename T,
typename U>
819 template <
typename T,
typename U>
827 template <
typename T,
typename U>
835 template <
typename T,
typename U>
843 template <
typename T,
typename U>
858 template <
typename T,
typename U>
866 template <
typename T,
typename U>
874 template <
typename T,
typename U>
882 template <
typename T,
typename U>
890 template <
typename T,
typename U>
898 template <
typename T,
typename U>
906 template <
typename T,
typename U>
914 template <
typename T,
typename U>
924 template <
typename T,
typename U>
932 template <
typename T,
typename U>
940 template <
typename T,
typename U>
948 template <
typename T,
typename U>
956 template <
typename T,
typename U>
964 template <
typename T,
typename U>
972 template <
typename T,
typename U>
980 template <
typename T,
typename U>
990 template <
typename T,
typename U>
997 template <
typename T,
typename U>
1004 template <
typename T,
typename U>
1011 template <
typename T,
typename U>
1018 template <
typename T,
typename U>
1025 template <
typename T,
typename U>
1032 template <
typename T,
typename U>
1039 template <
typename T,
typename U>
1048 template <
typename T,
typename U>
1056 template <
typename T,
typename U>
1064 template <
typename T,
typename U>
1072 template <
typename T,
typename U>
1080 template <
typename T,
typename U>
1088 template <
typename T,
typename U>
1096 template <
typename T,
typename U>
1104 template <
typename T,
typename U>
1117 template <
typename T>
1126 template <
typename T>
1134 template <
typename T>
1143 template <
typename T>
1151 #endif // CARTO_VOLUME_AUTO_DEREFERENCE 1155 #endif // CARTODATA_VOLUME_VOLUMEREF_D_OPERATORS_H carto::Volume< T > operator--(carto::Volume< T > &vol, int)
carto::Volume< bool > operator!(const carto::Volume< T > &vol)
Volume< T > & selfApply(Volume< T > &vol, UnaryFunction func)
Apply a function to all the elements of a volume (in place version)
VolumeRef< T > deepcopy() const
VoxelRGB operator/(const VoxelRGB &aa, const uint8_t &bb)
carto::Volume< bool > operator>=(const carto::Volume< T > &vol, const U &value)
VolumeRef< T > copyStructure() const
carto::Volume< bool > operator &&(const carto::Volume< T > &vol, const U &value)
VoxelRGB operator+(const VoxelRGB &aa, const VoxelRGB &bb)
carto::Volume< bool > operator>(const carto::Volume< T > &vol, const U &value)
Convenient handle for a Volume - this is normally the entry point for all volumes handling...
carto::Volume< T > operator~(const carto::Volume< T > &vol)
bool any() const
True if at least one value compares to true.
VoxelRGB operator*(const VoxelRGB &aa, const uint8_t &bb)
carto::Volume< bool > operator==(const carto::Volume< T > &vol, const U &value)
carto::Volume< T > & operator &=(carto::Volume< T > &vol, const U &value)
carto::Volume< typename carto::volumeutil::modulus< T, U >::result_type > operator%(const carto::Volume< T > &vol, const U &value)
carto::Volume< typename carto::volumeutil::bitwise_xor< T, U >::result_type > operator^(const carto::Volume< T > &vol, const U &value)
void fill(const T &value)
Fills the volume with a given value.
VolumeRef< T > & operator=(const T &value)
carto::Volume< T > & operator%=(carto::Volume< T > &vol, const U &value)
VolumeRef< T > copy() const
carto::Volume< bool > operator!=(const carto::Volume< T > &vol, const U &value)
carto::Volume< typename carto::volumeutil::bitwise_or< T, U >::result_type > operator|(const carto::Volume< T > &vol, const U &value)
carto::Volume< T > & operator^=(carto::Volume< T > &vol, const U &value)
Volume< T > deepcopy(const Volume< T > &src)
Performs a copy of the data (not only a reference copy) The whole view hierarchy is fully duplicated...
carto::Volume< bool > operator||(const carto::Volume< T > &vol, const U &value)
carto::Volume< T > & operator*=(carto::Volume< T > &vol, const U &value)
carto::Volume< T > & operator+=(carto::Volume< T > &vol, const U &value)
carto::Volume< T > & operator-=(carto::Volume< T > &vol, const U &value)
carto::Volume< typename carto::volumeutil::bitwise_and< T, U >::result_type > operator &(const carto::Volume< T > &vol, const U &value)
VoxelRGB operator-(const VoxelRGB &aa, const VoxelRGB &bb)
Volume< OUTP > & applyTowards(const Volume< T > &vol, Volume< OUTP > &dst, UnaryFunction func)
Apply a function to all the elements of a volume (already allocated output version) ...
Volume< typename UnaryFunction::result_type > apply(const Volume< T > &vol, UnaryFunction func)
Used by the actual Volume and VolumeRef operators It allows to keep the loops in one place and to spe...
DataTypeTraits< T >::LongType sum() const
To avoid overflow, the biggest possible type (intmax_t, uintmax_t, double...) is used for computation...
bool all() const
True if all values compare to true.
carto::Volume< T > operator++(carto::Volume< T > &vol, int)
carto::Volume< T > & operator|=(carto::Volume< T > &vol, const U &value)
carto::Volume< T > & operator/=(carto::Volume< T > &vol, const U &value)