
#include <print>
#include <iostream>
#include <string>

// Datei fuer die Speicherreservierung
#include "ttp_01alloc.h"

// Modul zum Abspeichern eines bel. Datums
import StoreData;
// Demo-Objekt
import CData3;

// main() Funktion
int main()
{
    // Platz fuer int-Wert mit malloc anlegen
    std::println("int mit MallocAlloc:");
    StoreData<int, MallocAlloc> intParam;
    intParam.SetData(10);
    std::println("Datum: {}", intParam.GetData());
    // Platz fuer string-Wert mit new anlegen
    std::println("\nstring mit NewAlloc:");
    StoreData<std::string, NewAlloc> stringParam;
    stringParam.SetData("Another string");
    std::println("Datum: {}", stringParam.GetData());
    // Platz fuer float-Wert mit Default-Allokierung anlegen
    std::println("\nfloat mit Default-Template:");
    StoreData<float> floatParam;
    floatParam.SetData(3.1416f);
    std::println("Datum: {}", floatParam.GetData());

    // Platz fuer CData3-Objekt mit malloc anlegen
    std::println("\nCData3 mit MallocAlloc:");
    StoreData<CData3, MallocAlloc> classParam;
    std::cout << "Datum: " << classParam.GetData() << '\n';
    classParam.SetData(CData3("A new string"));
    std::cout << "Datum: " << classParam.GetData() << '\n';

    // Ab hier wird wieder aufgeraeumt
    std::println("\nUnd alles wieder entfernen:");
}
