#ifndef ULMDOC0_ULMDOC_HPP
#define ULMDOC0_ULMDOC_HPP
#include <fstream>
#include <map>
#include <string>
namespace ulmdoc {
class UlmDoc
{
  public:
    UlmDoc() = default;
    using Key = std::string;
    using Description = std::string;
    void setActiveKey(const Key &key);
    void addMnemonicDescription(const Key &key, const Description &description);
    void addDescription(const Description &description);
    void addUnescapedDescription(const Description &description);
    void addLineBreak();
    void addFormat();
    void addPurpose();
    void addEffect();
    void addAsmNotation();
    void addAsmAlternative();
    void print(std::ifstream &tex, std::ifstream &isa,
               std::ofstream &out) const;
  private:
    Key activeKey;
    std::map<std::string, std::string> page;
    std::map<std::string, std::string> intro;
};
extern UlmDoc ulmDoc;
} // namespace ulmdoc
#endif // ULMDOC0_ULMDOC_HPP