Ver Fonte

Use size_t for FileReader

Kajetan Johannes Hammerle há 1 ano atrás
pai
commit
079afc3703
3 ficheiros alterados com 11 adições e 14 exclusões
  1. 5 6
      include/core/io/FileReader.hpp
  2. 5 7
      src/FileReader.cpp
  3. 1 1
      test/modules/FileReaderTests.cpp

+ 5 - 6
include/core/io/FileReader.hpp

@@ -1,11 +1,13 @@
 #ifndef CORE_FILE_READER_HPP
 #define CORE_FILE_READER_HPP
 
+#include <stdio.h>
+
 #include "core/io/File.hpp"
 
 namespace Core {
     class FileReader final {
-        void* file;
+        FILE* file;
         Path path;
 
     public:
@@ -15,16 +17,13 @@ namespace Core {
         ~FileReader();
         FileReader& operator=(const FileReader& other) = delete;
         FileReader& operator=(FileReader&& other);
-
         const Path& getPath() const;
-
         Error open(const Path& path);
         Error open(const char* path);
         Error readChar(int& c);
-        Error readChars(char* buffer, int bufferSize);
-
+        Error readChars(char* buffer, size_t bufferSize);
         void swap(FileReader& other);
     };
 }
 
-#endif
+#endif

+ 5 - 7
src/FileReader.cpp

@@ -1,7 +1,5 @@
 #include "core/io/FileReader.hpp"
 
-#include <stdio.h>
-
 #include "ErrorSimulator.hpp"
 #include "core/utils/Logger.hpp"
 
@@ -14,7 +12,7 @@ Core::FileReader::FileReader(FileReader&& other) : FileReader() {
 
 Core::FileReader::~FileReader() {
     if(file != nullptr) {
-        int r = fclose(static_cast<FILE*>(file));
+        int r = fclose(file);
         if(r != 0 || CORE_FILE_CLOSE_FAIL) {
             CORE_LOG_WARNING("Cannot close file #: #", path, r);
         }
@@ -53,18 +51,18 @@ Core::Error Core::FileReader::readChar(int& c) {
     if(file == nullptr) {
         return ErrorCode::INVALID_STATE;
     }
-    c = fgetc(static_cast<FILE*>(file));
+    c = fgetc(file);
     return c == EOF ? ErrorCode::END_OF_FILE : ErrorCode::NONE;
 }
 
-Core::Error Core::FileReader::readChars(char* buffer, int bufferSize) {
+Core::Error Core::FileReader::readChars(char* buffer, size_t bufferSize) {
     if(file == nullptr) {
         return ErrorCode::INVALID_STATE;
     } else if(bufferSize <= 0) {
         return ErrorCode::INVALID_ARGUMENT;
     }
-    size_t size = static_cast<size_t>(bufferSize - 1);
-    size_t readBytes = fread(buffer, 1, size, static_cast<FILE*>(file));
+    size_t size = bufferSize - 1;
+    size_t readBytes = fread(buffer, 1, size, file);
     buffer[readBytes] = '\0';
     return readBytes != size ? ErrorCode::END_OF_FILE : ErrorCode::NONE;
 }

+ 1 - 1
test/modules/FileReaderTests.cpp

@@ -84,7 +84,7 @@ static void testInvalidAccess() {
     CORE_TEST_EQUAL(Core::ErrorCode::INVALID_STATE,
                     r.readChars(buffer, sizeof(buffer)));
     CORE_TEST_ERROR(r.open(TEST_FILE));
-    CORE_TEST_EQUAL(Core::ErrorCode::INVALID_ARGUMENT, r.readChars(buffer, -1));
+    CORE_TEST_EQUAL(Core::ErrorCode::INVALID_ARGUMENT, r.readChars(buffer, 0));
     CORE_TEST_EQUAL(Core::ErrorCode::INVALID_STATE, r.open(TEST_FILE));
 }