april  1.0.0
...
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
apriltokenizer.h
Go to the documentation of this file.
1 /* ========================================================================= */
2 /* ------------------------------------------------------------------------- *//*
12 
13 
14  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15  Please read COPYING and README files in root folder
16  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17 */
18 /* ------------------------------------------------------------------------- */
19 /* ========================================================================= */
20 #ifndef __AMODTOKENIZER_INC__
21 #define __AMODTOKENIZER_INC__
22 //
23 //
24 //
25 //
26 /* INCLUDES ------------------------------------------------------------ */
27 
28 #include <april/april.h>
29 
30 /* INCLUDES ============================================================ */
31 //
32 //
33 //
34 //
35 /* DEFINITIONS --------------------------------------------------------- */
36 
37 namespace april {
38 
40 struct
42  AaToken {
43 
45  enum Flags {
46  HasSpaces = 0x0001,
47  HasTabs = 0x0002,
48  HasNewLine = 0x0004,
49  HasLineFeed = HasNewLine,
50  HasCR = 0x0008,
51  HasWhites = HasSpaces | HasTabs | HasNewLine | HasCR,
52 
53  HasDigits = 0x0010,
54  HasLetters = 0x0020,
55  OnlyHex = 0x0040,
56  HasComma = 0x0080,
57  HasDot = 0x0100,
58  WasQuoted = 0x0200,
59 
60  HasLeadingWhites = 0x0400,
61  HasTrailingWhites = 0x0800,
62  HasMiddleWhites = 0x1000,
63  IsAllWhites = 0x2000 | HasLeadingWhites | HasMiddleWhites | HasTrailingWhites,
64 
65  HasLowCodes = 0x4000,
66  UpperCaseLetters = 0x8000
67  };
68 
70  void init ( void )
71  { i_start = -1; i_end = -1; flags = 0; }
72 
75  bool isAllWhite ( void ) const
76  { return ( flags & IsAllWhites ) == IsAllWhites; }
77 
78  bool leadingWhite ( void ) const
79  { return ( flags & HasLeadingWhites ) == HasLeadingWhites; }
80 
81  bool trailingWhite ( void ) const
82  { return ( flags & HasTrailingWhites ) == HasTrailingWhites; }
83 
84  bool middleWhite ( void ) const
85  { return ( flags & HasMiddleWhites ) == HasMiddleWhites; }
86 
87  bool hasWhiteSpaces ( void ) const
88  { return ( flags & HasWhites ) != 0; }
89 
90  bool hasDigits ( void ) const
91  { return ( flags & HasDigits ) != 0; }
92 
93  bool hasLetters ( void ) const
94  { return ( flags & HasLetters ) != 0; }
95 
96  bool hasComma ( void ) const
97  { return ( flags & HasComma ) != 0; }
98 
99  bool hasDot ( void ) const
100  { return ( flags & HasDot ) != 0; }
101 
102  bool hasLowCodes ( void ) const
103  { return ( flags & HasLowCodes ) == HasLowCodes; }
104 
105  bool hasUpperCaseLetters ( void ) const
106  { return ( flags & UpperCaseLetters ) == UpperCaseLetters; }
107 
108  bool hasLowerCaseLetters ( void ) const
109  { return ( ( flags & UpperCaseLetters ) == 0 ) && hasLetters(); }
110 
111 
112  bool isInteger ( void ) const
113  {
114  return ( isAllWhite() == false ) &&
115  ( middleWhite() == false ) &&
116  hasDigits() &&
117  ( hasLetters() == false );
118  }
119 
120  bool isHexInteger ( void ) const
121  {
122  return ( isAllWhite() == false ) &&
123  ( middleWhite() == false ) &&
124  ( ( flags & OnlyHex ) == OnlyHex );
125  }
126 
127  bool wasQuoted ( void ) const
128  { return ( flags & WasQuoted ) == WasQuoted; }
130 
131 
133  int i_start;
134 
136  int i_end;
137 
139  int flags;
140 
141 }; /* struct AaToken */
142 
143 
145 struct
147  AaTkString {
148 
150  QString getToken ( int i ) const
151  { return s_.mid( tk_.at( i ).i_start, tk_.at( i ).i_end - tk_.at( i ).i_start ); }
152 
154  QString getToken ( const AaToken & tk ) const
155  { return s_.mid( tk.i_start, tk.i_end - tk.i_start ); }
156 
158 
167  bool isString ( const QString & s_match, int i ) const;
168 
170 
177  bool isString ( int i ) const;
178 
180 
187  bool isString ( const AaToken & tk ) const;
188 
190 
193  bool isInteger ( int i ) const;
194 
196 
199  bool isInteger ( const AaToken & tk ) const;
200 
202 
205  bool isHexInteger ( int i ) const;
206 
208 
211  bool isHexInteger ( const AaToken & tk ) const;
212 
213 
214 
216  QString s_;
217 
219  QVector<AaToken> tk_;
220 
221 }; /* struct AaTkString */
222 
223 /* DEFINITIONS ========================================================= */
224 //
225 //
226 //
227 //
228 /* CLASS --------------------------------------------------------------- */
229 
233 class
235  AprilTokenizer : public MemTrack {
236  BBM_TRACK( AprilTokenizer );
237 
238  //
239  //
240  //
241  //
242  /* DEFINITIONS ----------------------------------------------------- */
243 
244  /* DEFINITIONS ===================================================== */
245  //
246  //
247  //
248  //
249  /* DATA ------------------------------------------------------------ */
250 
251 private:
252 
253 
254 
255  /* DATA ============================================================ */
256  //
257  //
258  //
259  //
260  /* FUNCTIONS ------------------------------------------------------- */
261 
262 public:
263 
265  static AaTkString basicTk ( const QString & s );
266 
267  /* FUNCTIONS ======================================================= */
268  //
269  //
270  //
271  //
272 
273 }; /* class AprilTokenizer */
274 
275 /* CLASS =============================================================== */
276 //
277 //
278 //
279 //
280 
281 } // namespace april
282 
283 #endif // __AMODTOKENIZER_INC__
284 /* ------------------------------------------------------------------------- */
285 /* ========================================================================= */