20 #include <cudf/utilities/span.hpp>
25 #include <type_traits>
71 template <
typename T = void,
72 CUDF_ENABLE_IF(std::is_same_v<T, void> or is_rep_layout_compatible<T>())>
73 T
const*
head() const noexcept
75 return static_cast<T const*
>(
_data);
90 template <typename T, CUDF_ENABLE_IF(is_rep_layout_compatible<T>())>
91 T
const*
data()
const noexcept
106 template <typename T, CUDF_ENABLE_IF(is_rep_layout_compatible<T>())>
122 template <typename T, CUDF_ENABLE_IF(is_rep_layout_compatible<T>())>
123 T
const*
end()
const noexcept
125 return begin<T>() +
size();
324 #pragma nv_exec_check_disable
328 #pragma nv_exec_check_disable
377 std::vector<column_view>
const& children = {});
387 return _children[child_index];
409 auto child_end() const noexcept {
return _children.cend(); }
419 template <typename T, CUDF_ENABLE_IF(cudf::is_numeric<T>() or
cudf::
is_chrono<T>())>
425 data.size() <=
static_cast<std::size_t
>(std::numeric_limits<cudf::size_type>::max()),
426 "Data exceeds the column size limit",
427 std::overflow_error);
441 template <typename T, CUDF_ENABLE_IF(cudf::is_numeric<T>() or
cudf::
is_chrono<T>())>
445 "Device span type must match column view type.");
453 std::vector<column_view> _children{};
529 std::vector<mutable_column_view>
const& children = {});
546 template <
typename T = void,
547 CUDF_ENABLE_IF(std::is_same_v<T, void> or is_rep_layout_compatible<T>())>
550 return const_cast<T*
>(detail::column_view_base::head<T>());
565 template <typename T, CUDF_ENABLE_IF(is_rep_layout_compatible<T>())>
568 return const_cast<T*
>(detail::column_view_base::data<T>());
581 template <typename T, CUDF_ENABLE_IF(is_rep_layout_compatible<T>())>
584 return const_cast<T*
>(detail::column_view_base::begin<T>());
597 template <typename T, CUDF_ENABLE_IF(is_rep_layout_compatible<T>())>
600 return const_cast<T*
>(detail::column_view_base::end<T>());
634 return mutable_children[child_index];
649 auto child_begin() const noexcept {
return mutable_children.begin(); }
656 auto child_end() const noexcept {
return mutable_children.end(); }
668 std::vector<mutable_column_view> mutable_children;
A non-owning, immutable view of device data as a column of elements, some of which may be null as ind...
column_view(column_view &&)=default
Move constructor.
size_type num_children() const noexcept
Returns the number of child columns.
auto child_begin() const noexcept
Returns iterator to the beginning of the ordered sequence of child column-views.
column_view & operator=(column_view &&)=default
Move assignment operator.
column_view & operator=(column_view const &)=default
Copy assignment operator.
auto child_end() const noexcept
Returns iterator to the end of the ordered sequence of child column-views.
column_view child(size_type child_index) const noexcept
Returns the specified child.
column_view(data_type type, size_type size, void const *data, bitmask_type const *null_mask, size_type null_count, size_type offset=0, std::vector< column_view > const &children={})
Construct a column_view from pointers to device memory for the elements and bitmask of the column.
column_view(column_view const &)=default
Copy constructor.
friend column_view bit_cast(column_view const &input, data_type type)
Zero-copy cast between types with the same size and compatible underlying representations.
Indicator for the logical data type of an element in a column.
A non-owning, immutable view of device data as a column of elements, some of which may be null as ind...
size_type null_count(size_type begin, size_type end) const
Returns the count of null elements in the range [begin, end)
T const * end() const noexcept
Return one past the last element after underlying data is casted to the specified type.
data_type type() const noexcept
Returns the element data_type
column_view_base(column_view_base &&)=default
Move constructor.
column_view_base(data_type type, size_type size, void const *data, bitmask_type const *null_mask, size_type null_count, size_type offset=0)
Construct a column_view_base from pointers to device memory for the elements and bitmask of the colum...
bitmask_type const * _null_mask
size_type null_count() const
Returns the count of null elements.
size_type _size
Number of elements.
column_view_base & operator=(column_view_base const &)=default
Copy assignment operator.
column_view_base & operator=(column_view_base &&)=default
Move assignment operator.
size_type size() const noexcept
Returns the number of elements in the column.
T const * begin() const noexcept
Return first element (accounting for offset) after underlying data is casted to the specified type.
T const * data() const noexcept
Returns the underlying data casted to the specified type, plus the offset.
size_type offset() const noexcept
Returns the index of the first element relative to the base memory allocation, i.e....
data_type _type
Element type.
size_type _null_count
The number of null elements.
T const * head() const noexcept
Returns pointer to the base device memory allocation casted to the specified type.
void const * _data
Pointer to device memory containing elements.
bool has_nulls(size_type begin, size_type end) const
Indicates if the column contains null elements in the range [begin, end), i.e., null_count(begin,...
bool has_nulls() const
Indicates if the column contains null elements, i.e., null_count() > 0
bitmask_type const * null_mask() const noexcept
Returns raw pointer to the underlying bitmask allocation.
bool nullable() const noexcept
Indicates if the column can contain null elements, i.e., if it has an allocated bitmask.
column_view_base(column_view_base const &)=default
Copy constructor.
bool is_empty() const noexcept
Returns true if size() returns zero, or false otherwise.
A non-owning, mutable view of device data as a column of elements, some of which may be null as indic...
T * head() const noexcept
Returns pointer to the base device memory allocation casted to the specified type.
size_type num_children() const noexcept
Returns the number of child columns.
T * begin() const noexcept
Return first element (accounting for offset) when underlying data is casted to the specified type.
void set_null_count(size_type new_null_count)
Set the null count.
auto child_begin() const noexcept
Returns iterator to the beginning of the ordered sequence of child column-views.
mutable_column_view(data_type type, size_type size, void *data, bitmask_type *null_mask, size_type null_count, size_type offset=0, std::vector< mutable_column_view > const &children={})
Construct a mutable_column_view from pointers to device memory for the elements and bitmask of the co...
T * data() const noexcept
Returns the underlying data casted to the specified type, plus the offset.
mutable_column_view(mutable_column_view const &)=default
Copy constructor.
friend mutable_column_view bit_cast(mutable_column_view const &input, data_type type)
Zero-copy cast between types with the same size and compatible underlying representations.
mutable_column_view & operator=(mutable_column_view &&)=default
Move assignment operator.
mutable_column_view & operator=(mutable_column_view const &)=default
Copy assignment operator.
auto child_end() const noexcept
Returns iterator to the end of the ordered sequence of child column-views.
bitmask_type * null_mask() const noexcept
Returns raw pointer to the underlying bitmask allocation.
mutable_column_view child(size_type child_index) const noexcept
Returns a reference to the specified child.
mutable_column_view(mutable_column_view &&)=default
Move constructor.
T * end() const noexcept
Return one past the last element after underlying data is casted to the specified type.
std::size_t shallow_hash(column_view const &input)
Computes a hash value from the shallow state of the specified column.
bool is_shallow_equivalent(column_view const &lhs, column_view const &rhs)
Uses only shallow state to determine if two column_views view equivalent columns.
#define CUDF_EXPECTS(...)
Macro for checking (pre-)conditions that throws an exception when a condition is violated.
int32_t size_type
Row index type for columns and tables.
uint32_t bitmask_type
Bitmask type stored as 32-bit unsigned integer.
constexpr bool is_chrono()
Indicates whether the type T is a chrono type.
#define CUDF_ENABLE_IF(...)
Convenience macro for SFINAE as an unnamed template parameter.
@ EMPTY
Always null with no underlying data.
column_view bit_cast(column_view const &input, data_type type)
Zero-copy cast between types with the same size and compatible underlying representations.
size_type count_descendants(column_view parent)
Counts the number of descendants of the specified parent.
Device version of C++20 std::span with reduced feature set.
Defines the mapping between cudf::type_id runtime type information and concrete C++ types.
Type declarations for libcudf.