]> git.ipfire.org Git - thirdparty/squid.git/blob - src/parser/Tokenizer.cc
Update documentation
[thirdparty/squid.git] / src / parser / Tokenizer.cc
1 #include "squid.h"
2 #include "Tokenizer.h"
3
4 namespace Parser {
5
6 bool
7 Tokenizer::token(SBuf &returnedToken, const CharacterSet &delimiters)
8 {
9 SBuf savebuf(buf_);
10 SBuf saveRetVal(returnedToken);
11 skip(delimiters);
12 if (!(prefix(returnedToken,delimiters))) {
13 buf_=savebuf;
14 returnedToken=saveRetVal;
15 return false;
16 }
17 skip(delimiters);
18 return true;
19 }
20
21 bool
22 Tokenizer::prefix(SBuf &returnedToken, const CharacterSet &tokenChars, const SBuf::size_type limit)
23 {
24 SBuf::size_type prefixLen = buf_.substr(0,limit).findFirstNotOf(tokenChars);
25 if (prefixLen == 0)
26 return false;
27 returnedToken = buf_.consume(prefixLen);
28 return true;
29 }
30
31 bool
32 Tokenizer::skip(const CharacterSet &tokenChars)
33 {
34 SBuf::size_type prefixLen = buf_.findFirstNotOf(tokenChars);
35 if (prefixLen == 0)
36 return false;
37 buf_.consume(prefixLen);
38 return true;
39 }
40
41 bool
42 Tokenizer::skip(const SBuf &tokenToSkip)
43 {
44 if (buf_.startsWith(tokenToSkip)) {
45 buf_.consume(tokenToSkip.length());
46 return true;
47 }
48 return false;
49 }
50
51 bool
52 Tokenizer::skip(const char tokenChar)
53 {
54 if (buf_[0] == tokenChar) {
55 buf_.consume(1);
56 return true;
57 }
58 return false;
59 }
60 } /* namespace Parser */