diff options
Made naming and slight formatting adjustments
1 files changed, 0 insertions, 102 deletions
| -rw-r--r-- | Year 1/Object-oriented Programming/Solutions Sem. 03/ex4/File.cpp | 102 |
diff --git a/Year 1/Object-oriented Programming/Solutions Sem. 03/ex4/File.cpp b/Year 1/Object-oriented Programming/Solutions Sem. 03/ex4/File.cpp deleted file mode 100644 index f553bbe..0000000 --- a/Year 1/Object-oriented Programming/Solutions Sem. 03/ex4/File.cpp +++ /dev/null @@ -1,102 +0,0 @@ -#include "File.h" - -/* Helper functions */ - -size_t fileSize(std::ifstream& file) { - int currIndex = file.tellg(); - file.seekg(0, std::ios::end); - - size_t size = file.tellg(); - file.seekg(currIndex, std::ios::beg); - - return size; -} - -/* Private File functions */ - -void File::resizeBuffer() { - size_t newLen = (length == 0) ? 8 : length << 1; - - Bytex* temp = new Bytex[newLen]; - for (int i = 0; i < length; i++) - temp[i] = fileBuffer[i]; - - if (length != 0) delete[] fileBuffer; - fileBuffer = temp; - length = newLen; -} - -char File::bytexToReadableChar(Bytex bytex) const { - char b = bytex.getByte(); - if ((b >= 'A' && b <= 'Z') || (b >= 'a' && b <= 'z')) - return bytex.getByte(); - return '.'; -} - -/* Public File functions */ - -File::File(const char* filePath) { - std::ifstream inFile(filePath); - if (!inFile.is_open()) { - std::cout << "Error opening file" << std::endl; - return; - } - - size_t size = fileSize(inFile); - length = count = 0; - - for (int i = 0; i < size; i++) - add(inFile.get()); - - inFile.close(); - - size_t pathLen = strlen(filePath) + 1; - originalFilePath = new char[pathLen]; - for (int i = 0; i < pathLen; i++) - originalFilePath[i] = filePath[i]; -} - -File::~File() { - delete[] fileBuffer; - delete[] originalFilePath; -} - -void File::viewFile() const { - char buffer[2]; - - for (size_t i = 0; i < count; i++) { - fileBuffer[i].getHex(buffer); - std::cout << buffer << " "; - } - std::cout << std::endl; - - for (size_t i = 0; i < count; i++) - std::cout << bytexToReadableChar(fileBuffer[i]) << " "; - std::cout << std::endl; -} - -void File::change(int index, Bytex bytex) { - fileBuffer[index] = bytex; -} - -void File::add(Bytex bytex) { - if (count == length) - resizeBuffer(); - - fileBuffer[count++] = bytex; -} - -void File::remove() { - fileBuffer[count--] = '\0'; -} - -void File::save() const { - saveAs(originalFilePath); -} - -void File::saveAs(const char* filePath) const { - std::ofstream outFile(filePath); - for (int i = 0; i < count; i++) - outFile.put(fileBuffer[i].getByte()); - outFile.close(); -} |
