5 #ifndef ODB_STATEMENT_PROCESSING_COMMON_HXX
6 #define ODB_STATEMENT_PROCESSING_COMMON_HXX
18 typedef std::char_traits<char>
traits;
20 static inline const char*
21 find (
const char* b,
const char* e,
char c)
23 return traits::find (b, e - b, c);
26 static inline const char*
27 rfind (
const char* b,
const char* e,
char c)
29 for (--e; b != e; --e)
49 static inline const char*
50 paren_begin (
const char*& b,
const char* end)
55 const char* e (find (b, end,
'\n'));
56 return (e != 0 ? e : end) - 1;
60 paren_next (
const char*& b,
const char*& e,
const char* end)
65 e = find (b, end,
'\n');
66 e = (e != 0 ? e : end) - 1;
70 b = (e + 1 != end ? e + 2 : end);
75 static inline const char*
76 comma_begin (
const char* b,
const char* end)
80 const char* e (find (b, end,
'\n'));
81 return e != 0 ? e - (*(e - 1) ==
',' ? 1 : 0) : end;
85 comma_next (
const char*& b,
const char*& e,
const char* end)
90 e = find (b, end,
'\n');
91 e = (e != 0 ? e - (*(e - 1) ==
',' ? 1 : 0) : end);
95 b = (e != end ? e + 1 : end);
100 static inline const char*
101 newline_begin (
const char* b,
const char* end)
105 const char* e (find (b, end,
'\n'));
106 return e != 0 ? e : end;
110 newline_next (
const char*& b,
114 std::size_t prefix_size)
123 if (static_cast<std::size_t> (end - b) > prefix_size &&
124 traits::compare (b, prefix, prefix_size) == 0)
126 e = find (b, end,
'\n');
136 static inline const char*
137 newline_rbegin (
const char* e,
const char* end)
139 const char* b (rfind (end, e - 1,
'\n'));
140 return b != 0 ? b + 1 : end;
144 newline_rnext (
const char*& b,
const char*& e,
const char* end)
149 b = rfind (end, e - 1,
'\n');
150 b = (b != 0 ? b + 1 : end);
162 process_fast (
const char* s, std::string& r)
165 for (std::size_t i (r.find (
'\n'));
166 i != std::string::npos;
167 i = r.find (
'\n', i))
174 #endif // ODB_STATEMENT_PROCESSING_COMMON_HXX
std::char_traits< char > traits
Definition: statement-processing-common.hxx:18