63 fh = fopen(filename,
"wb");
65 OJPH_ERROR(0x00060001,
"failed to open %s for writing", filename);
72 return fwrite(ptr, 1,
size,
fh);
122 assert(this->
is_open ==
false);
174 size_t needed_size = (size_t)
tell() + new_size;
178 memcpy(this->
cur_ptr, ptr, new_size);
189 FILE *f = fopen(file_name,
"wb");
191 OJPH_ERROR(0x00060003,
"failed to open %s for writing", file_name);
194 OJPH_ERROR(0x00060004,
"failed writing to %s", file_name);
201 needed_size += (needed_size + 1) >> 1;
207 this->
buf = (
ui8*)realloc(this->
buf, needed_size);
209 this->
buf = (
ui8*)malloc(needed_size);
234 fh = fopen(filename,
"rb");
236 OJPH_ERROR(0x00060002,
"failed to open %s for reading", filename);
243 return fread(ptr, 1,
size,
fh);
280 assert(this->data == NULL);
291 size_t bytes_to_read =
ojph_min(
size, (
size_t)bytes_left);
292 memcpy(ptr,
cur_ptr, bytes_to_read);
294 return bytes_to_read;
306 if (offset >= 0 && (
size_t)offset <=
size)
315 if (bytes_off >= 0 && (
size_t)bytes_off <=
size)
323 if (offset <= 0 && (std::ptrdiff_t)
size + offset >= 0)
void open(const char *filename)
size_t read(void *ptr, size_t size) override
void open(const char *filename)
size_t write(const void *ptr, size_t size) override
size_t read(void *ptr, size_t size) override
void open(const ui8 *data, size_t size)
si64 tell() override
Call this function to know the file size (i.e., number of bytes used to store the file).
size_t write(const void *ptr, size_t size) override
Call this function to write data to the memory file.
void expand_storage(size_t new_size, bool clear_all)
This function expands storage by x1.5 needed space.
void open(size_t initial_size=65536, bool clear_mem=false)
Call this function to open a memory file.
void write_to_file(const char *file_name) const
Call this function to write the memory file data to a file.
int ojph_fseek(FILE *stream, si64 offset, int origin)
si64 ojph_ftell(FILE *stream)
#define OJPH_ERROR(t,...)