49 lines
1.3 KiB
C++
49 lines
1.3 KiB
C++
//
|
|
// Created by black on 12.06.25.
|
|
//
|
|
|
|
#include "Manager.h"
|
|
|
|
#include <iostream>
|
|
#include <utility>
|
|
#include <filesystem>
|
|
|
|
#include "components/Alu.h"
|
|
namespace fs = std::filesystem;
|
|
|
|
Manager::Manager(std::string path): m_path(std::move(path)) {
|
|
std::cout << "Öffne Quellcode Datei: '" << m_path << "'" << "\n" << std::flush;
|
|
if (!fs::exists(m_path)) {
|
|
std::cerr << "Datei existiert nicht: " << m_path << "\n" << std::flush;
|
|
return;
|
|
}
|
|
m_programFile.open(m_path);
|
|
if (!m_programFile.is_open()) {
|
|
std::cerr << "Datei konnte nicht geöffnet werden: " << m_path << "\n" << std::flush;
|
|
std::cerr << "fail (z.B. Zugriffsrechte): " << m_programFile.fail() << "\n" << std::flush;
|
|
std::cerr << "bad (schwerwiegender Fehler): " << m_programFile.bad() << "\n" << std::flush;
|
|
return;
|
|
}
|
|
}
|
|
|
|
Manager::~Manager() {
|
|
m_programFile.close();
|
|
}
|
|
|
|
Manager *Manager::getInstance(const std::string &program_path) {
|
|
static Manager instance{program_path};
|
|
return &instance;
|
|
}
|
|
|
|
int Manager::run() {
|
|
std::string line;
|
|
ProgramLoader::getInstance()->indexFile(m_programFile);
|
|
m_programFile.clear();
|
|
m_programFile.seekg(0);
|
|
while (std::getline(m_programFile, line)) {
|
|
auto lineVector = ProgramLoader::parseLine(line);
|
|
Alu::calculate(lineVector);
|
|
}
|
|
return 0;
|
|
}
|