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

Public Member Functions

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

Public Attributes

std::string temporary
 
FILE * output {}
 
uint32_t checksum = 0
 

Detailed Description

Definition at line 92 of file reference_database_file.cuh.

Constructor & Destructor Documentation

◆ ~database_file_writer()

cuddl::detail::database_file_writer::~database_file_writer ( )
inline

Definition at line 97 of file reference_database_file.cuh.

97 {
98 if (output) std::fclose(output);
99 if (!temporary.empty()) {
100 ::unlink(temporary.c_str());
101 }
102 }

Member Function Documentation

◆ bytes()

Result< void > cuddl::detail::database_file_writer::bytes ( void const *  source,
size_t  size 
)
inline

Definition at line 104 of file reference_database_file.cuh.

104 {
105 if (size != 0) {
106 if (std::fwrite(source, 1, size, output) != size) {
107 return Err(Error::resource("cannot write reference database file"));
108 }
109 checksum = libdeflate_crc32(checksum, source, size);
110 }
111 return Ok();
112 }
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 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_writer::value ( T  item)
inline

Definition at line 115 of file reference_database_file.cuh.

115 {
116 item = database_file_little_endian(item);
117 return bytes(&item, sizeof(item));
118 }
T database_file_little_endian(T value)
Result< void > bytes(void const *source, size_t size)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ words()

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

Definition at line 121 of file reference_database_file.cuh.

121 {
122 if constexpr (std::endian::native == std::endian::little) {
123 return bytes(items.data(), items.size() * sizeof(T));
124 } else {
125 for (auto item : items) {
126 CUDDL_TRY(value(item));
127 }
128 return Ok();
129 }
130 }
#define CUDDL_TRY(expr)
Propagates a cuddl::Result failure from the enclosing function (GNU statement expression).
Definition error.hpp:225
auto const items
Definition kernels.cuh:1549
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ checksum

uint32_t cuddl::detail::database_file_writer::checksum = 0

Definition at line 95 of file reference_database_file.cuh.

◆ output

FILE* cuddl::detail::database_file_writer::output {}

Definition at line 94 of file reference_database_file.cuh.

94{};

◆ temporary

std::string cuddl::detail::database_file_writer::temporary

Definition at line 93 of file reference_database_file.cuh.


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