FONTAINE  1.0
MLR.h
Go to the documentation of this file.
1 //
2 // The Fontaine Font Analysis Project
3 //
4 // Copyright (c) 2009 by Edward H. Trager
5 // All Rights Reserved
6 //
7 // Released under the GNU GPL version 2.0 or later.
8 //
9 
10 
11 //
12 // MLR.h
13 //
14 // Markup Language Report base class
15 //
16 
17 #ifndef MLR_INCLUDED
18 #define MLR_INCLUDED
19 
20 #include <string>
21 #include <vector>
22 #include <sstream>
23 #include <stack>
24 
25 class MLRItem {
26 
27 private:
28 
29  std::string _key;
30  unsigned _children;
32 
33 public:
34 
35  MLRItem(const std::string &key);
36 
37  void incrementChildren();
38  void operator++();
39  void setAsListContainer();
40 
41  std::string getKey() const { return _key; };
42  unsigned getNumberOfChildren() const { return _children; };
43  bool isAListContainer() const;
44 };
45 
46 //
47 // Markup Language Report base class
48 //
49 class MLR {
50 
51 private:
52 
54 
55 
56 protected:
57 
58  std::string _rootTag;
59 
60  std::string _indentationString;
61  std::stack<MLRItem *> _stack;
62  std::ostringstream _ss;
63 
64  void _start(const std::string &key);
65  void _end(const std::string &key);
66 
67  void _incrementChildren();
68  unsigned _getNumberOfChildren();
69 
70  void _indent(void);
71 
72  void _setAsListContainer(void);
73  bool _isAListContainer(void);
74 
75 public:
76 
77  MLR();
78  virtual ~MLR(){};
79 
80  void setRootTag(const std::string &tag);
81  void setRootTag(const char *tag);
82 
83  //
84  // Virtuals and Pure Virtuals for defining in sub classes:
85  //
86 
87  virtual void startRoot(void)=0;
88  virtual void endRoot(void)=0;
89 
90  virtual void startList(const std::string &key)=0;
91  virtual void addKeyValuePairToList(const std::string &key,const std::string &value)=0;
92  virtual void endList(const std::string &key)=0;
93  virtual void start(const std::string &key)=0;
94  virtual void addKeyValuePair(const std::string &key,const std::string &value)=0;
95  virtual void end(const std::string &key)=0;
96 
97  virtual void startList(const char *key)=0;
98  virtual void addKeyValuePairToList(const char *key,const char *value)=0;
99  virtual void endList(const char *key)=0;
100  virtual void start(const char *key)=0;
101  virtual void addKeyValuePair(const char *key,const char *value)=0;
102  virtual void end(const char *key)=0;
103 
104  void setIndentationString(const std::string &indent);
105 
106  virtual std::string getReport() const;
107 
108 };
109 
110 #endif
virtual void start(const std::string &key)=0
void setAsListContainer()
Definition: MLR.cpp:55
Definition: MLR.h:49
std::string getKey() const
Definition: MLR.h:41
std::ostringstream _ss
Definition: MLR.h:62
virtual void endList(const std::string &key)=0
bool isAListContainer() const
Definition: MLR.cpp:64
virtual void addKeyValuePairToList(const std::string &key, const std::string &value)=0
void _start(const std::string &key)
Definition: MLR.cpp:88
unsigned _children
Definition: MLR.h:30
bool _isAListContainer(void)
Definition: MLR.cpp:198
MLRItem * _item
Definition: MLR.h:53
void _incrementChildren()
Definition: MLR.cpp:97
void _indent(void)
Definition: MLR.cpp:139
void incrementChildren()
Definition: MLR.cpp:37
unsigned getNumberOfChildren() const
Definition: MLR.h:42
void _setAsListContainer(void)
Definition: MLR.cpp:186
virtual std::string getReport() const
Definition: MLR.cpp:158
MLR()
Definition: MLR.cpp:78
void setRootTag(const std::string &tag)
Definition: MLR.cpp:167
virtual void end(const std::string &key)=0
std::stack< MLRItem * > _stack
Definition: MLR.h:61
void setIndentationString(const std::string &indent)
Definition: MLR.cpp:149
Definition: MLR.h:25
virtual void endRoot(void)=0
virtual ~MLR()
Definition: MLR.h:78
std::string _rootTag
Definition: MLR.h:58
std::string _key
Definition: MLR.h:29
MLRItem(const std::string &key)
Definition: MLR.cpp:26
bool _isAListContainer
Definition: MLR.h:31
std::string _indentationString
Definition: MLR.h:60
void operator++()
Definition: MLR.cpp:46
unsigned _getNumberOfChildren()
Definition: MLR.cpp:109
virtual void startRoot(void)=0
virtual void startList(const std::string &key)=0
virtual void addKeyValuePair(const std::string &key, const std::string &value)=0
void _end(const std::string &key)
Definition: MLR.cpp:121