Add escape functionality to rjp++
This commit is contained in:
parent
ad2138ba5d
commit
bf098ac96a
@ -47,6 +47,9 @@ namespace rjp{
|
||||
string& operator=(RJP_value* r);
|
||||
};
|
||||
|
||||
string escape(const rexy::string_base& str);
|
||||
string escape(const char* c);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@ -23,27 +23,35 @@
|
||||
|
||||
namespace rjp{
|
||||
|
||||
string::string(RJP_value* r):
|
||||
rexy::string_intermediary<detail::allocator>(rexy::steal(r ? rjp_get_string(r)->value : nullptr),
|
||||
r ? rjp_get_string(r)->length : 0,
|
||||
r ? rjp_get_string(r)->length : 0)
|
||||
{
|
||||
if(r){
|
||||
RJP_string* str = rjp_get_string(r);
|
||||
str->value = nullptr;
|
||||
str->length = 0;
|
||||
rjp_set_null(r);
|
||||
}
|
||||
}
|
||||
string& string::operator=(RJP_value* r){
|
||||
if(!r)
|
||||
return *this;
|
||||
reset();
|
||||
string::string(RJP_value* r):
|
||||
rexy::string_intermediary<detail::allocator>(rexy::steal(r ? rjp_get_string(r)->value : nullptr),
|
||||
r ? rjp_get_string(r)->length : 0,
|
||||
r ? rjp_get_string(r)->length : 0)
|
||||
{
|
||||
if(r){
|
||||
RJP_string* str = rjp_get_string(r);
|
||||
m_data = std::exchange(str->value, nullptr);
|
||||
m_length = str->length;
|
||||
m_cap = str->length;
|
||||
str->value = nullptr;
|
||||
str->length = 0;
|
||||
return *this;
|
||||
rjp_set_null(r);
|
||||
}
|
||||
}
|
||||
string& string::operator=(RJP_value* r){
|
||||
if(!r)
|
||||
return *this;
|
||||
reset();
|
||||
RJP_string* str = rjp_get_string(r);
|
||||
m_data = std::exchange(str->value, nullptr);
|
||||
m_length = str->length;
|
||||
m_cap = str->length;
|
||||
str->length = 0;
|
||||
return *this;
|
||||
}
|
||||
|
||||
string escape(const rexy::string_base& str){
|
||||
return escape(str.c_str());
|
||||
}
|
||||
string escape(const char* c){
|
||||
RJP_string tmp = rjp_escape(c);
|
||||
return string(rexy::steal<char*>(tmp.value), tmp.length);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user