From cbe7243da4b4e2348ed5fad3fa8b30d8aba801ca Mon Sep 17 00:00:00 2001 From: black Date: Mon, 7 Jul 2025 14:32:23 +0200 Subject: [PATCH] ProgramLoader corrections --- src/Manager.cpp | 5 +++++ src/Manager.h | 5 ++++- src/ProgramLoader.cpp | 9 ++++++--- src/ProgramLoader.h | 1 + src/main.cpp | 6 ++++-- 5 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/Manager.cpp b/src/Manager.cpp index 84ef127..c69daaf 100644 --- a/src/Manager.cpp +++ b/src/Manager.cpp @@ -12,3 +12,8 @@ Manager * Manager::getInstance(const std::string &program_path) { static Manager instance{program_path}; return &instance; } + +int Manager::run() { + ProgramLoader::getInstance(m_path)->indexFile(); + return 0; +} diff --git a/src/Manager.h b/src/Manager.h index fdd6c8c..19e50c3 100644 --- a/src/Manager.h +++ b/src/Manager.h @@ -6,7 +6,8 @@ #define MANAGER_H #include #include -#include + +#include "ProgramLoader.h" /// Die Manager Instanz sorgt für die Koordination von user input, Datei einlesen, code execution und anderen Aktionen. @@ -31,6 +32,8 @@ public: * @return Manager Instanz */ static Manager *getInstance(const std::string &program_path); + + int run(); }; diff --git a/src/ProgramLoader.cpp b/src/ProgramLoader.cpp index 3e06040..682cc0c 100644 --- a/src/ProgramLoader.cpp +++ b/src/ProgramLoader.cpp @@ -9,6 +9,10 @@ ProgramLoader::ProgramLoader(const std::string &path){ m_programFile.open(path); } +ProgramLoader::~ProgramLoader() { + m_programFile.close(); +} + ProgramLoader * ProgramLoader::getInstance(const std::string &program_path) { static ProgramLoader instance{program_path}; return &instance; @@ -20,16 +24,15 @@ ProgramLoader * ProgramLoader::getInstance(const std::string &program_path) { std::istringstream iss(input); std::string out; do { + out.clear(); /// Trenne den IStringStream bei jedem Leerzeichen und füge die Befehl(e)/-sargumente dem Output hinzu std::getline(iss, out, ' '); + if (out.empty()) break; /// Stoppe, sobald ein Kommentar im Source Code vorkommt if (out.at(0) != '#') { if (out.at(out.length() -1) == ',') { out.erase(out.length() - 1); } - if (out.at(out.length() -1) == ':') { - break; - } output.push_back(out); } else { break; diff --git a/src/ProgramLoader.h b/src/ProgramLoader.h index 6f753e0..df056e0 100644 --- a/src/ProgramLoader.h +++ b/src/ProgramLoader.h @@ -29,6 +29,7 @@ public: ProgramLoader(const ProgramLoader&&) = delete; ProgramLoader& operator=(const ProgramLoader&) = delete; ProgramLoader& operator=(const ProgramLoader&&) = delete; + ~ProgramLoader(); /** * Gibt die Singleton Instanz des ProgramLoaders zurück diff --git a/src/main.cpp b/src/main.cpp index 06dcdfb..ca76920 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,6 +2,8 @@ // Created by black on 12.06.25. // +#include "Manager.h" + int main() { - return 0; -} \ No newline at end of file + return Manager::getInstance("/home/black/Nextcloud/Dokumente/Dokumente/Hochschule/2. Semester/Rechnerarchitektur/Projekt/test.txt")->run(); +}