Stefan Schuermans commited on 2011-12-11 19:43:36
Showing 5 changed files, with 30 additions and 4 deletions.
... | ... |
@@ -36,7 +36,8 @@ bool Format::fromStr(const std::string &str) |
36 | 36 |
!parser.fixChr('-') || |
37 | 37 |
!parser.uintMin(1, channels) || |
38 | 38 |
!parser.fixChr('/') || |
39 |
- !parser.uintMin(2, maxval1)) |
|
39 |
+ !parser.uintMin(2, maxval1) || |
|
40 |
+ !parser.isDone()) |
|
40 | 41 |
return false; |
41 | 42 |
m_width = width; |
42 | 43 |
m_height = height; |
... | ... |
@@ -30,7 +30,8 @@ bool Size::fromStr(const std::string &str) |
30 | 30 |
|
31 | 31 |
if (!parser.uintMin(1, width) || |
32 | 32 |
!parser.fixChr('x') || |
33 |
- !parser.uintMin(1, height)) |
|
33 |
+ !parser.uintMin(1, height) || |
|
34 |
+ !parser.isDone()) |
|
34 | 35 |
return false; |
35 | 36 |
m_width = width; |
36 | 37 |
m_height = height; |
... | ... |
@@ -15,7 +15,7 @@ namespace Blinker { |
15 | 15 |
*/ |
16 | 16 |
StringParser::StringParser(const std::string &str): |
17 | 17 |
m_str(str), |
18 |
- m_it(str.begin()) |
|
18 |
+ m_it(m_str.begin()) |
|
19 | 19 |
{ |
20 | 20 |
} |
21 | 21 |
|
... | ... |
@@ -32,6 +32,21 @@ bool StringParser::fixChr(char chr) |
32 | 32 |
return true; |
33 | 33 |
} |
34 | 34 |
|
35 |
+/** |
|
36 |
+ * @brief parse one character ot of a set |
|
37 |
+ * @param[in] set set of characters allowed |
|
38 |
+ * @param[out] chr character parsed |
|
39 |
+ * @return if a character from the set was found and processed |
|
40 |
+ */ |
|
41 |
+bool StringParser::oneChrOf(const std::string &set, char &chr) |
|
42 |
+{ |
|
43 |
+ if (m_it == m_str.end() || set.find(*m_it) == std::string::npos) |
|
44 |
+ return false; |
|
45 |
+ chr = *m_it; |
|
46 |
+ ++m_it; |
|
47 |
+ return true; |
|
48 |
+} |
|
49 |
+ |
|
35 | 50 |
/** |
36 | 51 |
* @brief parse unsigned number |
37 | 52 |
* @param[out] uint number parsed from string |
... | ... |
@@ -28,6 +28,14 @@ public: |
28 | 28 |
*/ |
29 | 29 |
bool fixChr(char chr); |
30 | 30 |
|
31 |
+ /** |
|
32 |
+ * @brief parse one character ot of a set |
|
33 |
+ * @param[in] set set of characters allowed |
|
34 |
+ * @param[out] chr character parsed |
|
35 |
+ * @return if a character from the set was found and processed |
|
36 |
+ */ |
|
37 |
+ bool oneChrOf(const std::string &set, char &chr); |
|
38 |
+ |
|
31 | 39 |
/** |
32 | 40 |
* @brief parse unsigned number |
33 | 41 |
* @param[out] uint number parsed from string |
34 | 42 |