STIR 6.5.0

A convenience class for 4D index ranges. More...

#include "stir/IndexRange4D.h"

Inheritance diagram for stir::IndexRange4D:

Public Member Functions

 IndexRange4D (const IndexRange< 4 > &range_v)
 IndexRange4D (const int min_1, const int max_1, const int min_2, const int max_2, const int min_3, const int max_3, const int min_4, const int max_4)
 IndexRange4D (const int length_1, const int length_2, const int length_3, const int length_4)
Public Member Functions inherited from stir::IndexRange< 4 >
 IndexRange ()
 Empty range.
 IndexRange (const VectorWithOffset< IndexRange< num_dimensions - 1 > > &range)
 Make an IndexRange from the base type.
 IndexRange (const IndexRange< num_dimensions > &range)
 Copy constructor.
 IndexRange (const BasicCoordinate< num_dimensions, int > &min, const BasicCoordinate< num_dimensions, int > &max)
 Construct a regular range given by all minimum indices and all maximum indices.
 IndexRange (const BasicCoordinate< num_dimensions, int > &sizes)
 Construct a regular range given by sizes (minimum indices will be 0).
size_t size_all () const
 return the total number of elements in this range
bool operator== (const IndexRange< num_dimensions > &) const
 comparison operator
bool operator!= (const IndexRange< num_dimensions > &) const
bool is_regular () const
 checks if the range is 'regular'
bool get_regular_range (BasicCoordinate< num_dimensions, int > &min, BasicCoordinate< num_dimensions, int > &max) const
 find regular range, returns false if the range is not regular
Public Member Functions inherited from stir::VectorWithOffset< IndexRange< num_dimensions - 1 > >
int get_length () const
 return number of elements in this vector
size_t size () const
 return number of elements in this vector
int get_min_index () const
 get value of first valid index
int get_max_index () const
 get value of last valid index
void set_offset (const int min_index)
 change value of starting index
void set_min_index (const int min_index)
 identical to set_offset()
virtual void grow (const int min_index, const int max_index)
 grow the range of the vector, new elements are set to T()
void grow (const unsigned int new_size)
 grow the range of the vector from 0 to new_size-1, new elements are set to T()
virtual void resize (const int min_index, const int max_index)
 change the range of the vector, new elements are set to T()
void resize (const unsigned int new_size)
 change the range of the vector from 0 to new_size-1, new elements are set to T()
void reserve (const int min_index, const int max_index)
 make the allocated range at least from min_index to max_index
void reserve (const unsigned int new_size)
 make the allocated range at least from 0 to new_size-1
size_t capacity () const
 get allocated size
bool owns_memory_for_data () const
 check if this object owns the memory for the data
int get_capacity_min_index () const
 get min_index within allocated range
int get_capacity_max_index () const
 get max_index within allocated range
IndexRange< num_dimensions - 1 > & operator[] (int i)
 allow array-style access, read/write
const IndexRange< num_dimensions - 1 > & operator[] (int i) const
 array access, read-only
IndexRange< num_dimensions - 1 > & at (int i)
 allow array-style access, read/write, but with range checking (throws std::out_of_range)
const IndexRange< num_dimensions - 1 > & at (int i) const
 array access, read-only, but with range checking (throws std::out_of_range)
bool empty () const
 checks if the vector is empty
bool operator== (const VectorWithOffset &iv) const
bool operator!= (const VectorWithOffset &iv) const
void fill (const IndexRange< num_dimensions - 1 > &n)
 fill elements with value n
void apply_lower_threshold (const IndexRange< num_dimensions - 1 > &lower)
 Sets elements below value to the value.
void apply_upper_threshold (const IndexRange< num_dimensions - 1 > &upper)
 Sets elements above value to the value.
IndexRange< num_dimensions - 1 > * get_data_ptr ()
 member function for access to the data via a T*
const IndexRange< num_dimensions - 1 > * get_const_data_ptr () const
 member function for access to the data via a const T*
void release_data_ptr ()
 signal end of access to T*
void release_const_data_ptr () const
 signal end of access to const T*
iterator begin ()
 use to initialise an iterator to the first element of the vector
const_iterator begin () const
 use to initialise an iterator to the first element of the (const) vector
iterator end ()
 iterator 'past' the last element of the vector
const_iterator end () const
 iterator 'past' the last element of the (const) vector
reverse_iterator rbegin ()
reverse_iterator rend ()
const_reverse_iterator rbegin () const
const_reverse_iterator rend () const
VectorWithOffset & operator+= (const VectorWithOffset &v)
 adding elements of v to the current vector
VectorWithOffset & operator-= (const VectorWithOffset &v)
 subtracting elements of v from the current vector
VectorWithOffset & operator*= (const VectorWithOffset &v)
 multiplying elements of the current vector with elements of v
VectorWithOffset & operator/= (const VectorWithOffset &v)
 dividing all elements of the current vector by elements of v
 VectorWithOffset ()
 Default constructor: creates a vector of length 0.
 VectorWithOffset (const int hsz)
 Construct a VectorWithOffset of given length (initialised with T()).
 VectorWithOffset (const int min_index, const int max_index)
 Construct a VectorWithOffset with offset min_index (initialised with T()).
STIR_DEPRECATED VectorWithOffset (const int hsz, IndexRange< num_dimensions - 1 > *const data_ptr, IndexRange< num_dimensions - 1 > *const end_of_data_ptr)
 Construct a VectorWithOffset of given length pointing to existing data.
STIR_DEPRECATED VectorWithOffset (const int min_index, const int max_index, IndexRange< num_dimensions - 1 > *const data_ptr, IndexRange< num_dimensions - 1 > *const end_of_data_ptr)
 Construct a VectorWithOffset with offset min_index pointing to existing data.
 VectorWithOffset (const int hsz, const IndexRange< num_dimensions - 1 > *const data_ptr)
 Construct a VectorWithOffset of given length from a bare pointer (copying data).
 VectorWithOffset (const int min_index, const int max_index, const IndexRange< num_dimensions - 1 > *const data_ptr)
 Construct a VectorWithOffset with offset min_index from a bare pointer (copying data).
 VectorWithOffset (const int min_index, const int max_index, shared_ptr< IndexRange< num_dimensions - 1 >[]> data_sptr)
 Construct a VectorWithOffset sharing existing data.
 VectorWithOffset (const int sz, shared_ptr< IndexRange< num_dimensions - 1 >[]> data_sptr)
 Construct a VectorWithOffset sharing existing data.
 VectorWithOffset (const VectorWithOffset &il)
 copy constructor
virtual ~VectorWithOffset ()
 Destructor.
 VectorWithOffset (VectorWithOffset &&other) noexcept
 move constructor
void recycle ()
 Free all memory and make object as if default-constructed.
VectorWithOffset & operator= (const VectorWithOffset &il)
 assignment operator with another vector
VectorWithOffset operator+ (const VectorWithOffset &v) const
 adding vectors, element by element
VectorWithOffset operator- (const VectorWithOffset &v) const
 subtracting vectors, element by element
VectorWithOffset operator* (const VectorWithOffset &v) const
 multiplying vectors, element by element
VectorWithOffset operator/ (const VectorWithOffset &v) const
 dividing vectors, element by element

Additional Inherited Members

Public Types inherited from stir::IndexRange< 4 >
typedef base_type::iterator iterator
 typedefs such that we do not need to have typename wherever we use iterators
typedef base_type::const_iterator const_iterator
typedef IndexRange< num_dimensions - 1 > value_type
typedef value_type & reference
typedef const value_type & const_reference
typedef ptrdiff_t difference_type
typedef IndexRange< num_dimensions - 1 > * iterator
typedef IndexRange< num_dimensions - 1 > const * const_iterator
typedef std::reverse_iterator< iterator > reverse_iterator
typedef std::reverse_iterator< const_iterator > const_reverse_iterator
typedef size_t size_type
Protected Types inherited from stir::IndexRange< 4 >
typedef VectorWithOffset< IndexRange< num_dimensions - 1 > > base_type
void check_state () const
 Called internally to see if all variables are consistent.
void init_with_copy (const int min_index, const int max_index, IndexRange< num_dimensions - 1 > const *const data_ptr)
 change vector to the new index range and copy data from data_ptr
void init (const int min_index, const int max_index, IndexRange< num_dimensions - 1 > *const data_ptr, bool copy_data)
 initialise vector to the given index range and either copy from or point to data_ptr
IndexRange< num_dimensions - 1 > * num
 pointer to (*this)[0] (taking get_min_index() into account that is).

Detailed Description

A convenience class for 4D index ranges.

This class is derived from IndexRange<4>. It just provides some extra constructors for making 'regular' ranges.


The documentation for this class was generated from the following files: