Summary Files Commits Branches @commit @diff @stats
path: root / Year 1 / Object-oriented Programming / Solutions Sem. 03 / ex4 / File.cpp
diff options
context:
space:
mode:
1 files changed, 0 insertions, 102 deletions
-rw-r--r--Year 1/Object-oriented Programming/Solutions Sem. 03/ex4/File.cpp102
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();
-}