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& operator=(RJP_value* r);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
string escape(const rexy::string_base& str);
|
||||||
|
string escape(const char* c);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -23,27 +23,35 @@
|
|||||||
|
|
||||||
namespace rjp{
|
namespace rjp{
|
||||||
|
|
||||||
string::string(RJP_value* r):
|
string::string(RJP_value* r):
|
||||||
rexy::string_intermediary<detail::allocator>(rexy::steal(r ? rjp_get_string(r)->value : nullptr),
|
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,
|
||||||
r ? rjp_get_string(r)->length : 0)
|
r ? rjp_get_string(r)->length : 0)
|
||||||
{
|
{
|
||||||
if(r){
|
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();
|
|
||||||
RJP_string* str = rjp_get_string(r);
|
RJP_string* str = rjp_get_string(r);
|
||||||
m_data = std::exchange(str->value, nullptr);
|
str->value = nullptr;
|
||||||
m_length = str->length;
|
|
||||||
m_cap = str->length;
|
|
||||||
str->length = 0;
|
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