34 #ifndef CARTODATA_VOLUME_VOLUMEREF_D_INLINE_H
35 #define CARTODATA_VOLUME_VOLUMEREF_D_INLINE_H
65 #ifdef CARTO_VOLUME_AUTO_DEREFERENCE
72 const AllocatorContext& allocatorContext,
75 allocatorContext, allocated ) )
80 const AllocatorContext& allocatorContext,
88 const AllocatorContext& allocatorContext,
91 allocatorContext, allocated ) )
96 const AllocatorContext& allocatorContext,
101 template <
typename T>
104 const AllocatorContext& allocatorContext,
107 allocatorContext, allocated ) )
110 template <
typename T>
113 const AllocatorContext& allocatorContext,
118 template <
typename T>
122 const AllocatorContext & allocContext ):
126 template <
typename T>
130 const AllocatorContext & allocContext ):
137 template <
typename T>
141 return (*this)->getSize();
144 template <
typename T>
148 return (*this)->getSizeX();
151 template <
typename T>
155 return (*this)->getSizeY();
158 template <
typename T>
162 return (*this)->getSizeZ();
165 template <
typename T>
169 return (*this)->getSizeT();
172 template <
typename T>
176 return (*this)->header();
179 template <
typename T>
183 return (*this)->header();
186 template <
typename T>
190 return (*this)->header();
193 template <
typename T>
197 return (*this)->header();
200 template <
typename T>
204 return (*this)->getVoxelSize();
207 template <
typename T>
211 (*this)->setVoxelSize( vs );
214 template <
typename T>
218 (*this)->setVoxelSize( vx, vy, vz, vt );
224 template <
typename T>
228 return (*this)->begin();
231 template <
typename T>
235 return (*this)->end();
238 template <
typename T>
242 return (*this)->begin();
245 template <
typename T>
249 return (*this)->end();
255 template <
typename T>
259 return (**
this)( x, y, z, t );
262 template <
typename T>
266 return (**
this)( x, y, z, t );
269 template <
typename T>
273 return (*this)->at( x, y, z, t );
276 template <
typename T>
280 return (*this)->at( x, y, z, t );
283 template <
typename T>
287 return (**
this)(position);
290 template <
typename T>
294 return (**
this)(position);
297 template <
typename T>
301 return (*this)->at(position);
304 template <
typename T>
308 return (*this)->at(position);
311 template <
typename T>
315 return (**
this)(position);
318 template <
typename T>
322 return (**
this)(position);
325 template <
typename T>
329 return (*this)->at(position);
332 template <
typename T>
336 return (*this)->at(position);
342 template <
typename T>
346 (*this)->initialize();
349 template <
typename T>
353 return (*this)->allocatorContext();
356 template <
typename T>
363 template <
typename T>
367 const AllocatorContext& allocatorContext,
370 (*this)->reallocate( sizeX, sizeY, sizeZ, sizeT,
371 keepcontents, allocatorContext, allocate );
375 template <
typename T>
378 const AllocatorContext& allocatorContext,
381 (*this)->reallocate( size, keepcontents, allocatorContext, allocate );
390 template <
typename T>
394 return (*this)->refVolume();
397 template <
typename T>
401 return (*this)->setRefVolume( refvol );
404 template <
typename T>
408 return (*this)->posInRefVolume();
411 template <
typename T>
415 return (*this)->setPosInRefVolume( pos );
419 template <
typename T>
422 return (*this)->getLevelsCount();
425 template <
typename T>
428 return (*this)->refLevel(level);
431 template <
typename T>
434 return (*this)->refVolumeAtLevel(level);
437 template <
typename T>
440 const int level)
const {
441 return (*this)->posInRefVolumeAtLevel(level);
444 template <
typename T>
448 return (*this)->getBorders();
451 template <
typename T>
455 return (*this)->getStrides();
458 template <
typename T >
462 (*this)->copyHeaderFrom( other );
471 template <
typename T>
478 template <
typename T>
485 template <
typename T>
495 template <
typename T>
499 out.
ostream() <<
"VolumeRef" << std::flush;
500 if( !volume.get() ) {
502 <<
": empty" << std::endl;
507 out.
ostream() <<
": " << std::flush;
508 return out << *(volume.get());
512 template <
typename T>
517 return volumeout << volume;
520 template <
typename T>
Object reference(Object &value)
std::ostream & ostream() const
Convenient handle for a Volume - this is normally the entry point for all volumes handling.
virtual void reallocate(int sizeX=1, int sizeY=1, int sizeZ=1, int sizeT=1, bool keepcontents=false, const AllocatorContext &allocatorContext=AllocatorContext(), bool allocate=true)
const PropertySet & getPropertySet() const __attribute__((__deprecated__("use header() instead")))
int refLevel(const int level) const
std::vector< int > getBorders() const
Volume< T >::Position Position
void setVoxelSize(float vx, float vy=1., float vz=1., float vt=1.)
std::vector< float > getVoxelSize() const
void setRefVolume(const rc_ptr< Volume< T > > &refvol)
virtual void copyHeaderFrom(const PropertySet &other)
Volume< T >::Position posInRefVolumeAtLevel(const int level) const
int getLevelsCount() const
rc_ptr< Volume< T > > refVolume() const
rc_ptr< Volume< T > > refVolumeAtLevel(const int level) const
std::vector< int > getSize() const
const T & at(long x, long y=0, long z=0, long t=0) const
Volume< T >::iterator iterator
const PropertySet & header() const
const T & operator()(long x, long y=0, long z=0, long t=0) const
std::vector< size_t > getStrides() const
const AllocatorContext & allocatorContext() const
Volume< T >::const_iterator const_iterator
virtual void initialize()
void setPosInRefVolume(const Position4Di &pos)
const Position4Di posInRefVolume() const
VolumeRef< T > view(const Position4Di &pos, const Position4Di &size)
std::vector< int > Position
std::ostream & operator<<(std::ostream &out, const VoxelValue< T, C > &aa)
void displayRefVolumes(const Volume< T > &vol)
Display information about volumes hierarchy.
carto::Object getObjectHeader(Headered &h)