diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-07-16 01:40:58 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-07-16 01:40:58 +0000 |
commit | 6ab0b94dceb7d7f0bfca39976e745f22c7ba8939 (patch) | |
tree | 976b955c1349a464c0a58748f286f7e7b792c60c /include/hashcomp.h | |
parent | 5454b47bd5d5ce5fb08aed83bac0148eabab620e (diff) |
irc::tokenstream is a token parser which using std::string and std::vector builds a list of tokens using irc parsing rules.
e.g.:
:arse PRIVMSG #chan :foo bar baz
becomes
a[0] = ":arse", a[1] = "PRIVMSG", a[2] = "#chan", a[3] = "foo bar baz".
*** SOMEONE *** needs to optimize this or at least verify its neatness (without making it total craq and unreadable). Feel free to mess with my code.
Any optimizations you make, run them against the COMMENTED OUT TEST SUITE at the top of main() in src/inspircd.cpp and ensure ALL output is the same
with no crashes. (note: if you comment out and build with the test suite, all inspircd will do is output test data and exit!)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@4396 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include/hashcomp.h')
-rw-r--r-- | include/hashcomp.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/hashcomp.h b/include/hashcomp.h index 36e5dd0c3..ad6a2133e 100644 --- a/include/hashcomp.h +++ b/include/hashcomp.h @@ -79,6 +79,19 @@ namespace irc bool operator()(const in_addr &s1, const in_addr &s2) const; }; + class tokenstream + { + private: + std::string tokenbuffer; + std::vector<std::string> tokens; + public: + tokenstream(std::string &source); + ~tokenstream(); + + unsigned int GetNumTokens(); + const std::string& GetToken(unsigned int index); + }; + /** The irc_char_traits class is used for RFC-style comparison of strings. * This class is used to implement irc::string, a case-insensitive, RFC- |