diff options
Diffstat (limited to 'storage/spider/hs_client/escape.hpp')
-rw-r--r-- | storage/spider/hs_client/escape.hpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/storage/spider/hs_client/escape.hpp b/storage/spider/hs_client/escape.hpp new file mode 100644 index 00000000..4c23e167 --- /dev/null +++ b/storage/spider/hs_client/escape.hpp @@ -0,0 +1,64 @@ + +// vim:sw=2:ai + +/* + * Copyright (C) 2010 DeNA Co.,Ltd.. All rights reserved. + * See COPYRIGHT.txt for details. + */ + +#include "string_buffer.hpp" +#include "string_ref.hpp" +#include "string_util.hpp" + +#ifndef DENA_ESCAPE_HPP +#define DENA_ESCAPE_HPP + +namespace dena { + +void escape_string(char *& wp, const char *start, const char *finish); +void escape_string(string_buffer& ar, const char *start, const char *finish); +bool unescape_string(char *& wp, const char *start, const char *finish); + /* unescaped_string() works even if wp == start */ +bool unescape_string(string_buffer& ar, const char *start, const char *finish); + +uint32 read_ui32(char *& start, char *finish); +void write_ui32(string_buffer& buf, uint32 v); +void write_ui64(string_buffer& buf, uint64 v); + +inline bool +is_null_expression(const char *start, const char *finish) +{ + return (finish == start + 1 && start[0] == 0); +} + +inline void +read_token(char *& start, char *finish) +{ + char *const p = memchr_char(start, '\t', finish - start); + if (p == 0) { + start = finish; + } else { + start = p; + } +} + +inline void +skip_token_delim_fold(char *& start, char *finish) +{ + while (start != finish && start[0] == '\t') { + ++start; + } +} + +inline void +skip_one(char *& start, char *finish) +{ + if (start != finish) { + ++start; + } +} + +}; + +#endif + |