13 using ValueType = decltype(std::declval<ColumnType>().value_safe(0));
20 return column.value_safe(index);
28 template <
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_;
127 template <
typename ColumnType>
DataTable column iterator data type class.
Definition: column_iterator.h:29
DataTableColumnIterator operator++(int)
Definition: column_iterator.h:67
DataTableColumnIterator operator--(int)
Definition: column_iterator.h:72
value_type & reference
Definition: column_iterator.h:33
DataTableColumnIterator & operator-=(difference_type n)
Definition: column_iterator.h:93
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)
Definition: column_iterator.h:89
DataTableColumnIterator operator+(difference_type n) const
Definition: column_iterator.h:83
typename ValueAccessor::ValueType value_type
Definition: column_iterator.h:31
DataTableColumnIterator & operator--()
Definition: column_iterator.h:59
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
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: jsonparser.h:88
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
typename IteratorType::reference reference
Definition: column_iterator.h:132
typename IteratorType::iterator_category iterator_category
Definition: column_iterator.h:133
typename IteratorType::value_type value_type
Definition: column_iterator.h:131
typename IteratorType::difference_type difference_type
Definition: column_iterator.h:130