#pragma once

#include <iostream>
#include <string>
#include <map>
#include <filesystem>
#include "eval.h"
#include "machine.h"

#define VISIBLE __attribute__ ((visibility ("default")))

using argmap = std::map<std::string, std::string>;

class Klammer_base {
public:
    Klammer_base(Machine& machine)
        : m_machine(machine)
        {};
    virtual ~Klammer_base() {};

    std::string get(const std::string& name);
    std::string get(const char* name);
    virtual std::string html();
    virtual std::string tex();
    virtual std::string txt();

    std::string result();
    void show(const std::string& klammer_name);

    Machine m_machine;
};
