First pass of ImageWriter
Change-Id: I4f189587a2e3cc1c265200b8fa64321b299947eb
diff --git a/src/file.cc b/src/file.cc
new file mode 100644
index 0000000..df934e9
--- /dev/null
+++ b/src/file.cc
@@ -0,0 +1,36 @@
+// Copyright 2009 Google Inc. All Rights Reserved.
+
+#include "file.h"
+
+namespace art {
+
+bool File::ReadFully(void* buffer, int64_t num_bytes) {
+ int64_t remaining = num_bytes;
+ char* current_buffer = reinterpret_cast<char*>(buffer);
+ while (remaining > 0) {
+ int bytes_read = Read(current_buffer, remaining);
+ if (bytes_read <= 0) {
+ return false;
+ }
+ remaining -= bytes_read; // Reduce the number of remaining bytes.
+ current_buffer += bytes_read; // Move the buffer forward.
+ }
+ return true;
+}
+
+
+bool File::WriteFully(const void* buffer, int64_t num_bytes) {
+ int64_t remaining = num_bytes;
+ const char* current_buffer = reinterpret_cast<const char*>(buffer);
+ while (remaining > 0) {
+ int bytes_read = Write(current_buffer, remaining);
+ if (bytes_read < 0) {
+ return false;
+ }
+ remaining -= bytes_read; // Reduce the number of remaining bytes.
+ current_buffer += bytes_read; // Move the buffer forward.
+ }
+ return true;
+}
+
+} // namespace art