|
@@ -35,79 +35,79 @@
|
|
|
Error FileAccessBuffered::set_error(Error p_error) const {
|
|
|
|
|
|
return (last_error = p_error);
|
|
|
-};
|
|
|
+}
|
|
|
|
|
|
void FileAccessBuffered::set_cache_size(int p_size) {
|
|
|
|
|
|
cache_size = p_size;
|
|
|
-};
|
|
|
+}
|
|
|
|
|
|
int FileAccessBuffered::get_cache_size() {
|
|
|
|
|
|
return cache_size;
|
|
|
-};
|
|
|
+}
|
|
|
|
|
|
int FileAccessBuffered::cache_data_left() const {
|
|
|
|
|
|
if (file.offset >= file.size) {
|
|
|
return 0;
|
|
|
- };
|
|
|
+ }
|
|
|
|
|
|
if (cache.offset == -1 || file.offset < cache.offset || file.offset >= cache.offset + cache.buffer.size()) {
|
|
|
|
|
|
return read_data_block(file.offset, cache_size);
|
|
|
+ }
|
|
|
|
|
|
- } else {
|
|
|
-
|
|
|
- return cache.buffer.size() - (file.offset - cache.offset);
|
|
|
- };
|
|
|
-
|
|
|
- return 0;
|
|
|
-};
|
|
|
+ return cache.buffer.size() - (file.offset - cache.offset);
|
|
|
+}
|
|
|
|
|
|
void FileAccessBuffered::seek(size_t p_position) {
|
|
|
|
|
|
file.offset = p_position;
|
|
|
-};
|
|
|
+}
|
|
|
|
|
|
void FileAccessBuffered::seek_end(int64_t p_position) {
|
|
|
|
|
|
file.offset = file.size + p_position;
|
|
|
-};
|
|
|
+}
|
|
|
|
|
|
size_t FileAccessBuffered::get_position() const {
|
|
|
|
|
|
return file.offset;
|
|
|
-};
|
|
|
+}
|
|
|
|
|
|
size_t FileAccessBuffered::get_len() const {
|
|
|
|
|
|
return file.size;
|
|
|
-};
|
|
|
+}
|
|
|
|
|
|
bool FileAccessBuffered::eof_reached() const {
|
|
|
|
|
|
return file.offset > file.size;
|
|
|
-};
|
|
|
+}
|
|
|
|
|
|
uint8_t FileAccessBuffered::get_8() const {
|
|
|
-
|
|
|
- ERR_FAIL_COND_V(!file.open, 0);
|
|
|
+ if (!file.open) {
|
|
|
+ ERR_EXPLAIN("Can't get data, when file is not opened.");
|
|
|
+ ERR_FAIL_V(0);
|
|
|
+ }
|
|
|
|
|
|
uint8_t byte = 0;
|
|
|
if (cache_data_left() >= 1) {
|
|
|
|
|
|
byte = cache.buffer[file.offset - cache.offset];
|
|
|
- };
|
|
|
+ }
|
|
|
|
|
|
++file.offset;
|
|
|
|
|
|
return byte;
|
|
|
-};
|
|
|
+}
|
|
|
|
|
|
int FileAccessBuffered::get_buffer(uint8_t *p_dest, int p_length) const {
|
|
|
-
|
|
|
- ERR_FAIL_COND_V(!file.open, -1);
|
|
|
+ if (!file.open) {
|
|
|
+ ERR_EXPLAIN("Can't get buffer, when file is not opened.");
|
|
|
+ ERR_FAIL_V(-1);
|
|
|
+ }
|
|
|
|
|
|
if (p_length > cache_size) {
|
|
|
|
|
@@ -124,16 +124,16 @@ int FileAccessBuffered::get_buffer(uint8_t *p_dest, int p_length) const {
|
|
|
p_length -= size;
|
|
|
file.offset += size;
|
|
|
total_read += size;
|
|
|
- };
|
|
|
+ }
|
|
|
|
|
|
int err = read_data_block(file.offset, p_length, p_dest);
|
|
|
if (err >= 0) {
|
|
|
total_read += err;
|
|
|
file.offset += err;
|
|
|
- };
|
|
|
+ }
|
|
|
|
|
|
return total_read;
|
|
|
- };
|
|
|
+ }
|
|
|
|
|
|
int to_read = p_length;
|
|
|
int total_read = 0;
|
|
@@ -143,10 +143,10 @@ int FileAccessBuffered::get_buffer(uint8_t *p_dest, int p_length) const {
|
|
|
if (left == 0) {
|
|
|
file.offset += to_read;
|
|
|
return total_read;
|
|
|
- };
|
|
|
+ }
|
|
|
if (left < 0) {
|
|
|
return left;
|
|
|
- };
|
|
|
+ }
|
|
|
|
|
|
int r = MIN(left, to_read);
|
|
|
//PoolVector<uint8_t>::Read read = cache.buffer.read();
|
|
@@ -156,25 +156,25 @@ int FileAccessBuffered::get_buffer(uint8_t *p_dest, int p_length) const {
|
|
|
file.offset += r;
|
|
|
total_read += r;
|
|
|
to_read -= r;
|
|
|
- };
|
|
|
+ }
|
|
|
|
|
|
return p_length;
|
|
|
-};
|
|
|
+}
|
|
|
|
|
|
bool FileAccessBuffered::is_open() const {
|
|
|
|
|
|
return file.open;
|
|
|
-};
|
|
|
+}
|
|
|
|
|
|
Error FileAccessBuffered::get_error() const {
|
|
|
|
|
|
return last_error;
|
|
|
-};
|
|
|
+}
|
|
|
|
|
|
FileAccessBuffered::FileAccessBuffered() {
|
|
|
|
|
|
cache_size = DEFAULT_CACHE_SIZE;
|
|
|
-};
|
|
|
+}
|
|
|
|
|
|
FileAccessBuffered::~FileAccessBuffered() {
|
|
|
}
|