1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#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