mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 14:02:32 +01:00
64 lines
1.3 KiB
C++
64 lines
1.3 KiB
C++
|
|
// 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
|
|
|