cuDDL
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
cuddl::detail::database_file_reader Struct Reference

Public Member Functions

Result< void > bytes (void *destination, size_t size)
 
template<typename T >
Result< void > value (T &item)
 
template<typename T >
Result< void > words (std::vector< T > &items)
 

Public Attributes

std::ifstream input
 
uint64_t remaining {}
 
uint32_t checksum = 0
 

Detailed Description

Definition at line 53 of file reference_database_file.cuh.

Member Function Documentation

◆ bytes()

Result< void > cuddl::detail::database_file_reader::bytes ( void *  destination,
size_t  size 
)
inline

Definition at line 59 of file reference_database_file.cuh.

59 {
60 if (size > remaining ||
61 size > static_cast<size_t>(std::numeric_limits<std::streamsize>::max())) {
62 return Err(Error::invalid_argument("truncated reference database file"));
63 }
64 if (size != 0) {
65 input.read(static_cast<char*>(destination), static_cast<std::streamsize>(size));
66 if (!input) return Err(Error::resource("cannot read reference database file"));
67 checksum = libdeflate_crc32(checksum, destination, size);
68 }
69 remaining -= size;
70 return Ok();
71 }
Result< void > Ok() noexcept
Success return for Result<void>; same as return {}.
Definition error.hpp:181
cuda::std::unexpected< Error > Err(Error error)
Failure return; converts to any Result<T> via cuda::std::unexpected.
Definition error.hpp:176
static Error invalid_argument(std::string message)
Definition error.hpp:99
static Error resource(std::string message)
Definition error.hpp:103
Here is the call graph for this function:
Here is the caller graph for this function:

◆ value()

template<typename T >
Result< void > cuddl::detail::database_file_reader::value ( T &  item)
inline

Definition at line 74 of file reference_database_file.cuh.

74 {
75 CUDDL_TRY(bytes(&item, sizeof(item)));
76 item = database_file_little_endian(item);
77 return Ok();
78 }
#define CUDDL_TRY(expr)
Propagates a cuddl::Result failure from the enclosing function (GNU statement expression).
Definition error.hpp:225
T database_file_little_endian(T value)
Result< void > bytes(void *destination, size_t size)
Here is the call graph for this function:

◆ words()

template<typename T >
Result< void > cuddl::detail::database_file_reader::words ( std::vector< T > &  items)
inline

Definition at line 81 of file reference_database_file.cuh.

81 {
82 CUDDL_TRY(bytes(items.data(), items.size() * sizeof(T)));
83 if constexpr (std::endian::native != std::endian::little) {
84 for (auto& item : items) {
85 item = database_file_little_endian(item);
86 }
87 }
88 return Ok();
89 }
auto const items
Definition kernels.cuh:1549
Here is the call graph for this function:

Member Data Documentation

◆ checksum

uint32_t cuddl::detail::database_file_reader::checksum = 0

Definition at line 57 of file reference_database_file.cuh.

◆ input

std::ifstream cuddl::detail::database_file_reader::input

Definition at line 54 of file reference_database_file.cuh.

◆ remaining

uint64_t cuddl::detail::database_file_reader::remaining {}

Definition at line 55 of file reference_database_file.cuh.

55{};

The documentation for this struct was generated from the following file: