ProgramLoader reordering
This commit is contained in:
@@ -6,7 +6,13 @@
|
|||||||
|
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
Manager::Manager(std::string path): m_path(std::move(path)) {}
|
Manager::Manager(std::string path): m_path(std::move(path)) {
|
||||||
|
m_programFile.open(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
Manager::~Manager() {
|
||||||
|
m_programFile.close();
|
||||||
|
}
|
||||||
|
|
||||||
Manager *Manager::getInstance(const std::string &program_path) {
|
Manager *Manager::getInstance(const std::string &program_path) {
|
||||||
static Manager instance{program_path};
|
static Manager instance{program_path};
|
||||||
@@ -14,6 +20,10 @@ Manager * Manager::getInstance(const std::string &program_path) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int Manager::run() {
|
int Manager::run() {
|
||||||
ProgramLoader::getInstance(m_path)->indexFile();
|
std::string line;
|
||||||
|
ProgramLoader::getInstance()->indexFile(m_programFile);
|
||||||
|
while (std::getline(m_programFile, line)) {
|
||||||
|
auto lineVector = ProgramLoader::parseLine(line);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,16 +15,22 @@ class Manager {
|
|||||||
private:
|
private:
|
||||||
/// Die Instanz des Managers soll mit einem immutable path zum Programm erstellt werden
|
/// Die Instanz des Managers soll mit einem immutable path zum Programm erstellt werden
|
||||||
explicit Manager(std::string path);
|
explicit Manager(std::string path);
|
||||||
|
|
||||||
std::string m_path;
|
std::string m_path;
|
||||||
std::map<std::string, int> m_labels;
|
std::map<std::string, int> m_labels;
|
||||||
|
std::ifstream m_programFile;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/// Singleton Logik
|
/// Singleton Logik
|
||||||
Manager(const Manager &) = delete;
|
Manager(const Manager &) = delete;
|
||||||
|
|
||||||
Manager(const Manager &&) = delete;
|
Manager(const Manager &&) = delete;
|
||||||
|
|
||||||
Manager &operator=(const Manager &) = delete;
|
Manager &operator=(const Manager &) = delete;
|
||||||
|
|
||||||
Manager &operator=(const Manager &&) = delete;
|
Manager &operator=(const Manager &&) = delete;
|
||||||
~Manager() = default;
|
|
||||||
|
~Manager();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -37,5 +43,4 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif //MANAGER_H
|
#endif //MANAGER_H
|
||||||
|
|||||||
@@ -5,16 +5,8 @@
|
|||||||
#include "ProgramLoader.h"
|
#include "ProgramLoader.h"
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
ProgramLoader::ProgramLoader(const std::string &path){
|
ProgramLoader *ProgramLoader::getInstance() {
|
||||||
m_programFile.open(path);
|
static ProgramLoader instance;
|
||||||
}
|
|
||||||
|
|
||||||
ProgramLoader::~ProgramLoader() {
|
|
||||||
m_programFile.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
ProgramLoader * ProgramLoader::getInstance(const std::string &program_path) {
|
|
||||||
static ProgramLoader instance{program_path};
|
|
||||||
return &instance;
|
return &instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,8 +33,7 @@ ProgramLoader * ProgramLoader::getInstance(const std::string &program_path) {
|
|||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProgramLoader::indexFile() {
|
void ProgramLoader::indexFile(std::ifstream &m_programFile) {
|
||||||
if (m_programFile.is_open()) {
|
|
||||||
std::string line;
|
std::string line;
|
||||||
int lineNumber = 1;
|
int lineNumber = 1;
|
||||||
/// Parse Zeile für Zeile
|
/// Parse Zeile für Zeile
|
||||||
@@ -56,4 +47,3 @@ void ProgramLoader::indexFile() {
|
|||||||
lineNumber++;
|
lineNumber++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@@ -18,18 +18,19 @@ private:
|
|||||||
*
|
*
|
||||||
* @param path Der Pfad zur .txt Quelldatei des Programmes
|
* @param path Der Pfad zur .txt Quelldatei des Programmes
|
||||||
*/
|
*/
|
||||||
explicit ProgramLoader(const std::string &path);
|
explicit ProgramLoader() = default;
|
||||||
|
|
||||||
std::ifstream m_programFile;
|
|
||||||
std::map<std::string, int> m_labels;
|
std::map<std::string, int> m_labels;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/// Singleton Logik
|
/// Singleton Logik
|
||||||
ProgramLoader(const ProgramLoader &) = delete;
|
ProgramLoader(const ProgramLoader &) = delete;
|
||||||
|
|
||||||
ProgramLoader(const ProgramLoader &&) = delete;
|
ProgramLoader(const ProgramLoader &&) = delete;
|
||||||
|
|
||||||
ProgramLoader &operator=(const ProgramLoader &) = delete;
|
ProgramLoader &operator=(const ProgramLoader &) = delete;
|
||||||
|
|
||||||
ProgramLoader &operator=(const ProgramLoader &&) = delete;
|
ProgramLoader &operator=(const ProgramLoader &&) = delete;
|
||||||
~ProgramLoader();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gibt die Singleton Instanz des ProgramLoaders zurück
|
* Gibt die Singleton Instanz des ProgramLoaders zurück
|
||||||
@@ -37,7 +38,7 @@ public:
|
|||||||
* @param program_path Der Pfad zur .txt Quelldatei des Programmes
|
* @param program_path Der Pfad zur .txt Quelldatei des Programmes
|
||||||
* @return ProgramLoader Instanz
|
* @return ProgramLoader Instanz
|
||||||
*/
|
*/
|
||||||
static ProgramLoader *getInstance(const std::string &program_path);
|
static ProgramLoader *getInstance();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parst eine Zeile des Assembly Codes und gibt diese als sortierten Vektor zurück
|
* Parst eine Zeile des Assembly Codes und gibt diese als sortierten Vektor zurück
|
||||||
@@ -50,9 +51,8 @@ public:
|
|||||||
/**
|
/**
|
||||||
* Durchscucht das aktuelle Programm nach Labeln und speichert diese zusammen mit den Zeilennummern in einer Map
|
* Durchscucht das aktuelle Programm nach Labeln und speichert diese zusammen mit den Zeilennummern in einer Map
|
||||||
*/
|
*/
|
||||||
void indexFile();
|
void indexFile(std::ifstream &m_programFile);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif //PROGRAMLOADER_H
|
#endif //PROGRAMLOADER_H
|
||||||
|
|||||||
Reference in New Issue
Block a user