13 using ValueType =
decltype(std::declval<ColumnType>().value_safe(0));
20 return column.value_safe(index);
28template <
typename ColumnType,
typename ValueAccessor = detail::DefaultValueAccessor<ColumnType>>
46 : column_(&column), index_(
index) {}
50 std::size_t
index()
const {
return index_; }
55 return column_->is_null(index_) ?
value_type{} : column_->value_safe(index_).value();
80 return index_ -
other.index_;
117 const ColumnType *column_;
127template <
typename ColumnType>
130 using difference_type =
typename IteratorType::difference_type;
131 using value_type =
typename IteratorType::value_type;
132 using reference =
typename IteratorType::reference;
133 using iterator_category =
typename IteratorType::iterator_category;
DataTable column iterator data type class.
Definition column_iterator.h:29
DataTableColumnIterator operator++(int)
Definition column_iterator.h:67
DataTableColumnIterator & operator-=(difference_type n)
Definition column_iterator.h:93
DataTableColumnIterator operator--(int)
Definition column_iterator.h:72
value_type & reference
Definition column_iterator.h:33
std::size_t difference_type
Definition column_iterator.h:32
DataTableColumnIterator()
Initialise a new instance of the DataTableColumnIterator{ColumnType, ValueAccessor} class.
Definition column_iterator.h:39
DataTableColumnIterator & operator++()
Definition column_iterator.h:63
friend DataTableColumnIterator operator-(difference_type diff, const DataTableColumnIterator &other)
Definition column_iterator.h:103
DataTableColumnIterator operator-(difference_type n) const
Definition column_iterator.h:86
bool operator>=(const DataTableColumnIterator &other) const
Definition column_iterator.h:114
std::size_t index() const
Gets the current iterator index.
Definition column_iterator.h:50
bool operator<(const DataTableColumnIterator &other) const
Definition column_iterator.h:111
DataTableColumnIterator operator+(difference_type n) const
Definition column_iterator.h:83
typename ValueAccessor::ValueType value_type
Definition column_iterator.h:31
DataTableColumnIterator & operator+=(difference_type n)
Definition column_iterator.h:89
bool operator==(const DataTableColumnIterator &other) const
Definition column_iterator.h:109
value_type operator*() const
Gets the current iterator value.
Definition column_iterator.h:54
DataTableColumnIterator & operator--()
Definition column_iterator.h:59
std::random_access_iterator_tag iterator_category
Definition column_iterator.h:34
bool operator<=(const DataTableColumnIterator &other) const
Definition column_iterator.h:113
bool operator>(const DataTableColumnIterator &other) const
Definition column_iterator.h:112
friend DataTableColumnIterator operator+(difference_type diff, const DataTableColumnIterator &other)
Definition column_iterator.h:98
bool operator!=(const DataTableColumnIterator &other) const
Definition column_iterator.h:110
DataTableColumnIterator(const ColumnType &column, std::size_t index=0)
Initialise a new instance of the DataTableColumnIterator{ColumnType, ValueAccessor} class.
Definition column_iterator.h:45
difference_type operator-(const DataTableColumnIterator &other) const
Definition column_iterator.h:79
Top-level namespace for Health-GPS Core C++ API.
Definition analysis.h:7
@ other
Common diseases excluding cancers.
Global namespace.
Definition column_iterator.h:123
Defines the default column value accessor type.
Definition column_iterator.h:11
ValueType operator()(const ColumnType &column, std::size_t index)
Gets a value from the target column.
Definition column_iterator.h:19
decltype(std::declval< ColumnType >().value_safe(0)) ValueType
The column value type.
Definition column_iterator.h:13