1 #ifndef OSMIUM_UTIL_DATA_FILE_HPP
2 #define OSMIUM_UTIL_DATA_FILE_HPP
39 #include <system_error>
70 throw std::system_error(errno, std::system_category(),
"tmpfile failed");
92 DataFile(
const char* filename,
bool writable) :
93 m_file(::fopen(filename, writable ?
"wb+" :
"rb" )) {
95 throw std::system_error(errno, std::system_category(),
"fopen failed");
106 DataFile(
const std::string& filename,
bool writable) :
107 DataFile(filename.c_str(), writable) {
114 operator bool() const noexcept {
115 return m_file !=
nullptr;
127 if (::fclose(m_file) != 0) {
128 throw std::system_error(errno, std::system_category(),
"fclose failed");
137 }
catch (std::system_error&) {
150 throw std::runtime_error(
"no open file");
153 int fd = ::fileno(m_file);
156 throw std::system_error(errno, std::system_category(),
"fileno failed");
179 void grow(
size_t new_size)
const {
180 if (
size() < new_size) {
192 #endif // OSMIUM_UTIL_DATA_FILE_HPP
size_t file_size(int fd)
Definition: file.hpp:66
DataFile(const std::string &filename, bool writable)
Definition: data_file.hpp:106
void grow(size_t new_size) const
Definition: data_file.hpp:179
size_t size() const
Definition: data_file.hpp:167
DataFile()
Definition: data_file.hpp:67
DataFile(const char *filename, bool writable)
Definition: data_file.hpp:92
Namespace for everything in the Osmium library.
Definition: assembler.hpp:55
int fd() const
Definition: data_file.hpp:148
~DataFile() noexcept
Definition: data_file.hpp:134
Definition: data_file.hpp:56
void close()
Definition: data_file.hpp:125
void resize_file(int fd, size_t new_size)
Definition: file.hpp:93
FILE * m_file
Definition: data_file.hpp:58
DataFile(size_t size)
Definition: data_file.hpp:80