OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
Tokenizer.hpp
Go to the documentation of this file.
1
30#ifndef OPENSWMM_ENGINE_TOKENIZER_HPP
31#define OPENSWMM_ENGINE_TOKENIZER_HPP
32
33#include <string>
34#include <string_view>
35#include <vector>
36
37namespace openswmm::input {
38
46class Tokenizer {
47public:
48 Tokenizer() = delete;
49
50 // -----------------------------------------------------------------------
51 // Comment handling
52 // -----------------------------------------------------------------------
53
67 static std::string_view strip_comment(std::string_view line) noexcept;
68
69 // -----------------------------------------------------------------------
70 // Tokenization
71 // -----------------------------------------------------------------------
72
92 static std::vector<std::string> tokenize(std::string_view line);
93
107 static std::vector<std::string_view> tokenize_views(std::string_view line);
108
109 // -----------------------------------------------------------------------
110 // Utilities
111 // -----------------------------------------------------------------------
112
117 static void to_upper_inplace(std::string& s) noexcept;
118
122 static std::string to_upper(std::string_view s);
123
127 static std::string_view trim(std::string_view s) noexcept;
128
134 static bool is_numeric(std::string_view sv) noexcept;
135
139 static bool is_boolean(std::string_view sv) noexcept;
140
146 static bool parse_boolean(std::string_view sv) noexcept;
147
148private:
150 static bool is_delimiter(char c) noexcept {
151 return c == ',' || c == '\t' || c == ' ';
152 }
153};
154
155} /* namespace openswmm::input */
156
157#endif /* OPENSWMM_ENGINE_TOKENIZER_HPP */
Stateless multi-delimiter tokenizer for SWMM input lines.
Definition Tokenizer.hpp:46
static std::string_view trim(std::string_view s) noexcept
Trim leading and trailing whitespace from a string_view.
Definition Tokenizer.cpp:149
static std::vector< std::string_view > tokenize_views(std::string_view line)
Split a line and return string_view tokens (zero-allocation).
Definition Tokenizer.cpp:104
static bool parse_boolean(std::string_view sv) noexcept
Parse a boolean token.
Definition Tokenizer.cpp:184
static std::vector< std::string > tokenize(std::string_view line)
Split a SWMM input line into tokens.
Definition Tokenizer.cpp:45
static bool is_numeric(std::string_view sv) noexcept
Returns true if sv represents a numeric value.
Definition Tokenizer.cpp:161
static bool is_boolean(std::string_view sv) noexcept
Returns true if sv represents a boolean YES/NO/TRUE/FALSE/1/0.
Definition Tokenizer.cpp:171
static std::string to_upper(std::string_view s)
Convert a string to uppercase (returns new string).
Definition Tokenizer.cpp:143
static void to_upper_inplace(std::string &s) noexcept
Convert a string to uppercase in-place.
Definition Tokenizer.cpp:137
static std::string_view strip_comment(std::string_view line) noexcept
Strip trailing semicolon comment from a line.
Definition Tokenizer.cpp:28
Definition CatchmentHandler.cpp:44