openMSX
AdhocCliCommParser.hh
Go to the documentation of this file.
1 #ifndef ADHOCCLICOMMPARSER_HH
2 #define ADHOCCLICOMMPARSER_HH
3 
4 #include <cstdint>
5 #include <functional>
6 #include <string>
7 
9 {
10 public:
11  explicit AdhocCliCommParser(std::function<void(const std::string&)> callback);
12  void parse(const char* buf, size_t n);
13 
14 private:
15  void parse(char c);
16 
17  std::function<void(const std::string&)> callback;
18  std::string command;
19  uint32_t unicode;
20  enum State {
21  O0, // no tag char matched yet
22  O1, // matched <
23  O2, // <c
24  O3, // <co
25  O4, // <com
26  O5, // <comm
27  O6, // <comma
28  O7, // <comman
29  O8, // <command
30  C0, // matched <command>, now parsing xml entities and </command>
31  C1, // matched <
32  C2, // </
33  C3, // </c
34  C4, // </co
35  C5, // </com
36  C6, // </comm
37  C7, // </comma
38  C8, // </comman
39  C9, // </command
40  A1, // matched &
41  A2, // &a
42  A3, // &am
43  A4, // &amp
44  P3, // matched &ap
45  P4, // &apo
46  P5, // &apos
47  Q2, // matched &q
48  Q3, // &qu
49  Q4, // &quo
50  Q5, // &quot
51  G2, // matched &g
52  G3, // &gt
53  L2, // matched &l
54  L3, // &lt
55  H2, // matched &#
56  H3, // &#x
57  } state;
58 };
59 
60 #endif
void parse(const char *buf, size_t n)
AdhocCliCommParser(std::function< void(const std::string &)> callback)