added task-class

This commit is contained in:
portnoytmy 2025-06-16 23:47:53 +02:00
parent 469ad9bb65
commit efd4e8fdf5
5 changed files with 113 additions and 17 deletions

30
.gitignore vendored Normal file
View file

@ -0,0 +1,30 @@
# Build-Verzeichnisse
build/
bin/
lib/
# CMake-Dateien
CMakeFiles/
CMakeCache.txt
cmake_install.cmake
Makefile
# Compiled Object files
*.o
*.obj
# Shared objects
*.so
*.dylib
*.dll
# Executables
*.exe
*.out
*.app
# IDE-spezifische Dateien
.vscode/
.idea/
*.swp
*~

25
CMakeLists.txt Normal file
View file

@ -0,0 +1,25 @@
cmake_minimum_required(VERSION 3.10)
project(BS_Praktikum5 VERSION 0.1.0 LANGUAGES CXX)
# Compiler-Optionen
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Warnungen und Debug-Informationen bei Entwicklung aktivieren
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -g")
endif()
# Aktuelles Verzeichnis als Include-Pfad hinzufügen
include_directories(.)
# Quellen sammeln
file(GLOB SOURCES *.cpp)
file(GLOB HEADERS *.h *.hpp)
# Ausführbare Datei erstellen
add_executable(${PROJECT_NAME} ${SOURCES})
# Installation konfigurieren
install(TARGETS ${PROJECT_NAME} DESTINATION bin)

View file

@ -1,26 +1,24 @@
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <utility>
#include <sstream>
#include "task.h"
#include <deque>
std::vector<std::pair<std::string, std::string> > readFile(const std::string &filename) {
std::vector<std::pair<std::string, std::string> > instructions;
std::ifstream file(filename);
using namespace std;
vector<pair<string, string> > readFile(const string &filename) {
vector<pair<string, string> > instructions;
ifstream file(filename);
if(!file.is_open()) {
std::cerr << "Fehler: Datei " << filename << " konnte nicht geöffnet werden.\n";
cerr << "Fehler: Datei " << filename << " konnte nicht geöffnet werden.\n";
return instructions;
}
std::string line;
while (std::getline(file, line)) {
string line;
while (getline(file, line)) {
// Entferne führende oder trailing Whitespace
if (line.empty()) continue;
std::istringstream iss(line);
std::string command;
std::string param;
istringstream iss(line);
string command;
string param;
if (!(iss >> command)) {
// Keine gültige Eingabe in dieser Zeile
@ -33,7 +31,7 @@ std::vector<std::pair<std::string, std::string> > readFile(const std::string &fi
param = "";
}
instructions.push_back(std::make_pair(command, param));
instructions.push_back(make_pair(command, param));
}
return instructions;
@ -43,7 +41,7 @@ std::vector<std::pair<std::string, std::string> > readFile(const std::string &fi
int main() {
auto result = readFile("init");
for (const auto &inst : result) {
std::cout << "Befehl: " << inst.first << " | Parameter: " << inst.second << "\n";
cout << "Befehl: " << inst.first << " | Parameter: " << inst.second << "\n";
}
return 0;

15
task.cpp Normal file
View file

@ -0,0 +1,15 @@
#include <task.h>
Task::Task(int pid,
const std::string &name,
const std::vector<std::pair<std::string, std::string>> &program)
{
this->pid=pid;
this->name=name;
this->program=program;
this->pc=0;
this->acc=0;
this->blockTicks=0;
this->active=true;
}

28
task.h Normal file
View file

@ -0,0 +1,28 @@
#ifndef TASK_H
#define TASK_H
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <vector>
#include <utility>
#include <sstream>
class Task
{
public:
Task()=delete;
Task(int pid, const std::string &name, const std::vector<std::pair<std::string, std::string>> &program);
private:
int pid,
pc,
acc,
blockTicks;
std::string name;
std::vector<std::pair<std::string, std::string>> program;
bool active;
};
#endif //TASK_H