io: templatise write on output data type
This commit is contained in:
parent
debdd77610
commit
46686dbc64
11
io.cpp
11
io.cpp
@ -92,14 +92,15 @@ util::slurp (const boost::filesystem::path& path) {
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
template <typename T>
|
||||
void
|
||||
util::write (const boost::filesystem::path &path, const char *data, size_t len) {
|
||||
util::write (const boost::filesystem::path &path, const T *data, size_t len) {
|
||||
CHECK_SOFT (len > 0);
|
||||
CHECK_HARD (data);
|
||||
|
||||
fd_ref fd (path, ACCESS_WRITE);
|
||||
const char *cursor = data;
|
||||
size_t remaining = len;
|
||||
const char *cursor = reinterpret_cast<const char*> (data);
|
||||
size_t remaining = len * sizeof (T);
|
||||
|
||||
while (remaining) {
|
||||
ssize_t consumed = ::write (fd, cursor, remaining);
|
||||
@ -111,6 +112,10 @@ util::write (const boost::filesystem::path &path, const char *data, size_t len)
|
||||
}
|
||||
}
|
||||
|
||||
template void write<char> (const boost::filesystem::path&, const char*, size_t);
|
||||
template void write<uint8_t> (const boost::filesystem::path&, const uint8_t*, size_t);
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
fd_ref::fd_ref (int _fd):
|
||||
fd (_fd)
|
||||
|
3
io.hpp
3
io.hpp
@ -47,8 +47,9 @@ namespace util {
|
||||
std::unique_ptr<char []>
|
||||
slurp [[gnu::warn_unused_result]] (const boost::filesystem::path&);
|
||||
|
||||
template <typename T>
|
||||
void
|
||||
write (const boost::filesystem::path &, const char *data, size_t len);
|
||||
write (const boost::filesystem::path &, const T *data, size_t len);
|
||||
|
||||
|
||||
///------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user