Update to newer rexylib
This commit is contained in:
parent
69fca74d3c
commit
25d7c6c0fc
@ -93,7 +93,7 @@ namespace rjp{
|
|||||||
string_val add(const RJP_string&);
|
string_val add(const RJP_string&);
|
||||||
string_val add(RJP_string&&);
|
string_val add(RJP_string&&);
|
||||||
string_val add(const char*, RJP_index len = 0);
|
string_val add(const char*, RJP_index len = 0);
|
||||||
string_val add(const rexy::string_base<char>&);
|
string_val add(rexy::string_view);
|
||||||
string_val add(string&&);
|
string_val add(string&&);
|
||||||
|
|
||||||
value& remove(value& val);
|
value& remove(value& val);
|
||||||
|
|||||||
@ -75,13 +75,13 @@ namespace rjp{
|
|||||||
object& operator=(object&&) = default;
|
object& operator=(object&&) = default;
|
||||||
|
|
||||||
template<class Val>
|
template<class Val>
|
||||||
member<std::decay_t<Val>> add(const rexy::string_view& key, typename std::decay_t<Val>::underlying_type t){
|
member<std::decay_t<Val>> add(rexy::string_view key, typename std::decay_t<Val>::underlying_type t){
|
||||||
RJP_value* newmem = add_member_impl(key);
|
RJP_value* newmem = add_member_impl(key);
|
||||||
detail::set_to_underlying<std::decay_t<Val>>(newmem, t);
|
detail::set_to_underlying<std::decay_t<Val>>(newmem, t);
|
||||||
return create_unmanaged(newmem);
|
return create_unmanaged(newmem);
|
||||||
}
|
}
|
||||||
template<class Val = null>
|
template<class Val = null>
|
||||||
member<std::decay_t<Val>> add(const rexy::string_view& key){
|
member<std::decay_t<Val>> add(rexy::string_view key){
|
||||||
RJP_value* newmem = add_member_impl(key);
|
RJP_value* newmem = add_member_impl(key);
|
||||||
if constexpr(std::is_same<std::decay_t<Val>,rjp::array>::value)
|
if constexpr(std::is_same<std::decay_t<Val>,rjp::array>::value)
|
||||||
set_array_value(newmem);
|
set_array_value(newmem);
|
||||||
@ -93,11 +93,11 @@ namespace rjp{
|
|||||||
detail::set_to_underlying<std::decay_t<Val>>(newmem, 0);
|
detail::set_to_underlying<std::decay_t<Val>>(newmem, 0);
|
||||||
return create_unmanaged(newmem);
|
return create_unmanaged(newmem);
|
||||||
}
|
}
|
||||||
member<string_val> add(const rexy::string_view& key, const RJP_string&);
|
member<string_val> add(rexy::string_view key, const RJP_string&);
|
||||||
member<string_val> add(const rexy::string_view& key, RJP_string&&);
|
member<string_val> add(rexy::string_view key, RJP_string&&);
|
||||||
member<string_val> add(const rexy::string_view& key, const char*, RJP_index len = 0);
|
member<string_val> add(rexy::string_view key, const char*, RJP_index len = 0);
|
||||||
member<string_val> add(const rexy::string_view& key, const rexy::string_view&);
|
member<string_val> add(rexy::string_view key, rexy::string_view);
|
||||||
member<string_val> add(const rexy::string_view& key, string&&);
|
member<string_val> add(rexy::string_view key, string&&);
|
||||||
|
|
||||||
template<class Val>
|
template<class Val>
|
||||||
member<std::decay_t<Val>> add(string&& key, typename std::decay_t<Val>::underlying_type t){
|
member<std::decay_t<Val>> add(string&& key, typename std::decay_t<Val>::underlying_type t){
|
||||||
@ -121,13 +121,13 @@ namespace rjp{
|
|||||||
member<string_val> add(string&& key, const RJP_string&);
|
member<string_val> add(string&& key, const RJP_string&);
|
||||||
member<string_val> add(string&& key, RJP_string&&);
|
member<string_val> add(string&& key, RJP_string&&);
|
||||||
member<string_val> add(string&& key, const char*, RJP_index len = 0);
|
member<string_val> add(string&& key, const char*, RJP_index len = 0);
|
||||||
member<string_val> add(string&& key, const rexy::string_view&);
|
member<string_val> add(string&& key, rexy::string_view);
|
||||||
member<string_val> add(string&& key, string&&);
|
member<string_val> add(string&& key, string&&);
|
||||||
|
|
||||||
value remove(const rexy::string_view& key);
|
value remove(rexy::string_view key);
|
||||||
value& remove(value& val);
|
value& remove(value& val);
|
||||||
|
|
||||||
void destroy(const rexy::string_view& key);
|
void destroy(rexy::string_view key);
|
||||||
void destroy(value&& val);
|
void destroy(value&& val);
|
||||||
|
|
||||||
bool has_child(const value&);
|
bool has_child(const value&);
|
||||||
@ -142,10 +142,10 @@ namespace rjp{
|
|||||||
|
|
||||||
size_type size(void)const;
|
size_type size(void)const;
|
||||||
|
|
||||||
value search(const rexy::string_view& key)const;
|
value search(rexy::string_view key)const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RJP_value* add_member_impl(const rexy::string_view& key);
|
RJP_value* add_member_impl(rexy::string_view key);
|
||||||
RJP_value* add_member_impl(string&& key);
|
RJP_value* add_member_impl(string&& key);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -51,7 +51,7 @@ namespace rjp{
|
|||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
string to_json(const value& val, int format = RJP_FORMAT_PRETTY);
|
string to_json(const value& val, int format = RJP_FORMAT_PRETTY);
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
parse_res parse_json(const rexy::string_base<char>& str, RJP_parse_flag = RJP_PARSE_NO_EXT);
|
parse_res parse_json(rexy::string_view str, RJP_parse_flag = RJP_PARSE_NO_EXT);
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
parse_res parse_json(const char* str, RJP_parse_flag = RJP_PARSE_NO_EXT);
|
parse_res parse_json(const char* str, RJP_parse_flag = RJP_PARSE_NO_EXT);
|
||||||
namespace detail{
|
namespace detail{
|
||||||
|
|||||||
@ -32,13 +32,13 @@ namespace rjp{
|
|||||||
using underlying_type = RJP_string;
|
using underlying_type = RJP_string;
|
||||||
public:
|
public:
|
||||||
using value::value;
|
using value::value;
|
||||||
string_val(const rexy::string_view& str);
|
string_val(rexy::string_view str);
|
||||||
string_val(string&& str);
|
string_val(string&& str);
|
||||||
string_val(void);
|
string_val(void);
|
||||||
string_val(const value& val);
|
string_val(const value& val);
|
||||||
string_val(value&& val);
|
string_val(value&& val);
|
||||||
string_val(const value& val, const rexy::string_base<char>& i);
|
string_val(const value& val, rexy::string_view i);
|
||||||
string_val(value&& val, const rexy::string_base<char>& i);
|
string_val(value&& val, rexy::string_view i);
|
||||||
string_val(const value& val, string&& i);
|
string_val(const value& val, string&& i);
|
||||||
string_val(value&& val, string&& i);
|
string_val(value&& val, string&& i);
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ namespace rjp{
|
|||||||
|
|
||||||
rexy::string_view get(void)const;
|
rexy::string_view get(void)const;
|
||||||
string steal(void);
|
string steal(void);
|
||||||
void set(const rexy::string_base<char>& str);
|
void set(rexy::string_view str);
|
||||||
void set(string&& str);
|
void set(string&& str);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -55,8 +55,8 @@ namespace rjp{
|
|||||||
rjp_set_string(newelem, c, len);
|
rjp_set_string(newelem, c, len);
|
||||||
return string_val(create_unmanaged(newelem));
|
return string_val(create_unmanaged(newelem));
|
||||||
}
|
}
|
||||||
string_val array::add(const rexy::string_base<char>& s){
|
string_val array::add(rexy::string_view s){
|
||||||
return add(s.get(), s.length());
|
return add(s.data(), s.length());
|
||||||
}
|
}
|
||||||
string_val array::add(string&& s){
|
string_val array::add(string&& s){
|
||||||
RJP_value* newelem = rjp_new_element(m_value);
|
RJP_value* newelem = rjp_new_element(m_value);
|
||||||
|
|||||||
@ -39,62 +39,62 @@ namespace rjp{
|
|||||||
if(rjp_value_type(m_value) != rjp_json_object)
|
if(rjp_value_type(m_value) != rjp_json_object)
|
||||||
rjp_set_object(m_value);
|
rjp_set_object(m_value);
|
||||||
}
|
}
|
||||||
member<string_val> object::add(const rexy::string_view& key, const RJP_string& s){
|
member<string_val> object::add(rexy::string_view key, const RJP_string& s){
|
||||||
RJP_value* newmem = rjp_new_member(m_value, key.get(), key.length());
|
RJP_value* newmem = rjp_new_member(m_value, key.data(), key.length());
|
||||||
rjp_set_string(newmem, s.value, s.length);
|
rjp_set_string(newmem, s.value, s.length);
|
||||||
return create_unmanaged(newmem);
|
return create_unmanaged(newmem);
|
||||||
}
|
}
|
||||||
member<string_val> object::add(const rexy::string_view& key, RJP_string&& s){
|
member<string_val> object::add(rexy::string_view key, RJP_string&& s){
|
||||||
RJP_value* newmem = rjp_new_member(m_value, key.get(), key.length());
|
RJP_value* newmem = rjp_new_member(m_value, key.data(), key.length());
|
||||||
rjp_set_string_steal(newmem, s.value, s.length);
|
rjp_set_string_steal(newmem, s.value, s.length);
|
||||||
return create_unmanaged(newmem);
|
return create_unmanaged(newmem);
|
||||||
}
|
}
|
||||||
member<string_val> object::add(const rexy::string_view& key, const char* s, RJP_index len){
|
member<string_val> object::add(rexy::string_view key, const char* s, RJP_index len){
|
||||||
RJP_value* newmem = rjp_new_member(m_value, key.get(), key.length());
|
RJP_value* newmem = rjp_new_member(m_value, key.data(), key.length());
|
||||||
rjp_set_string(newmem, s, len);
|
rjp_set_string(newmem, s, len);
|
||||||
return create_unmanaged(newmem);
|
return create_unmanaged(newmem);
|
||||||
}
|
}
|
||||||
member<string_val> object::add(const rexy::string_view& key, const rexy::string_view& s){
|
member<string_val> object::add(rexy::string_view key, rexy::string_view s){
|
||||||
RJP_value* newmem = rjp_new_member(m_value, key.get(), key.length());
|
RJP_value* newmem = rjp_new_member(m_value, key.data(), key.length());
|
||||||
rjp_set_string(newmem, s.get(), s.length());
|
rjp_set_string(newmem, s.data(), s.length());
|
||||||
return create_unmanaged(newmem);
|
return create_unmanaged(newmem);
|
||||||
}
|
}
|
||||||
member<string_val> object::add(const rexy::string_view& key, string&& s){
|
member<string_val> object::add(rexy::string_view key, string&& s){
|
||||||
RJP_value* newmem = rjp_new_member(m_value, key.get(), key.length());
|
RJP_value* newmem = rjp_new_member(m_value, key.data(), key.length());
|
||||||
auto len = s.length();
|
auto len = s.length();
|
||||||
rjp_set_string_steal(newmem, s.release(), len);
|
rjp_set_string_steal(newmem, s.release(), len);
|
||||||
return create_unmanaged(newmem);
|
return create_unmanaged(newmem);
|
||||||
}
|
}
|
||||||
|
|
||||||
member<string_val> object::add(string&& key, const RJP_string& s){
|
member<string_val> object::add(string&& key, const RJP_string& s){
|
||||||
RJP_value* newmem = rjp_new_member_steal_key(m_value, key.get(), key.length());
|
RJP_value* newmem = rjp_new_member_steal_key(m_value, key.data(), key.length());
|
||||||
rjp_set_string(newmem, s.value, s.length);
|
rjp_set_string(newmem, s.value, s.length);
|
||||||
return create_unmanaged(newmem);
|
return create_unmanaged(newmem);
|
||||||
}
|
}
|
||||||
member<string_val> object::add(string&& key, RJP_string&& s){
|
member<string_val> object::add(string&& key, RJP_string&& s){
|
||||||
RJP_value* newmem = rjp_new_member_steal_key(m_value, key.get(), key.length());
|
RJP_value* newmem = rjp_new_member_steal_key(m_value, key.data(), key.length());
|
||||||
rjp_set_string_steal(newmem, s.value, s.length);
|
rjp_set_string_steal(newmem, s.value, s.length);
|
||||||
return create_unmanaged(newmem);
|
return create_unmanaged(newmem);
|
||||||
}
|
}
|
||||||
member<string_val> object::add(string&& key, const char* s, RJP_index len){
|
member<string_val> object::add(string&& key, const char* s, RJP_index len){
|
||||||
RJP_value* newmem = rjp_new_member_steal_key(m_value, key.get(), key.length());
|
RJP_value* newmem = rjp_new_member_steal_key(m_value, key.data(), key.length());
|
||||||
rjp_set_string(newmem, s, len);
|
rjp_set_string(newmem, s, len);
|
||||||
return create_unmanaged(newmem);
|
return create_unmanaged(newmem);
|
||||||
}
|
}
|
||||||
member<string_val> object::add(string&& key, const rexy::string_view& s){
|
member<string_val> object::add(string&& key, rexy::string_view s){
|
||||||
RJP_value* newmem = rjp_new_member_steal_key(m_value, key.get(), key.length());
|
RJP_value* newmem = rjp_new_member_steal_key(m_value, key.data(), key.length());
|
||||||
rjp_set_string(newmem, s.get(), s.length());
|
rjp_set_string(newmem, s.data(), s.length());
|
||||||
return create_unmanaged(newmem);
|
return create_unmanaged(newmem);
|
||||||
}
|
}
|
||||||
member<string_val> object::add(string&& key, string&& s){
|
member<string_val> object::add(string&& key, string&& s){
|
||||||
RJP_value* newmem = rjp_new_member_steal_key(m_value, key.get(), key.length());
|
RJP_value* newmem = rjp_new_member_steal_key(m_value, key.data(), key.length());
|
||||||
auto len = s.length();
|
auto len = s.length();
|
||||||
rjp_set_string_steal(newmem, s.release(), len);
|
rjp_set_string_steal(newmem, s.release(), len);
|
||||||
return create_unmanaged(newmem);
|
return create_unmanaged(newmem);
|
||||||
}
|
}
|
||||||
|
|
||||||
value object::remove(const rexy::string_view& key){
|
value object::remove(rexy::string_view key){
|
||||||
RJP_value* removed = rjp_remove_member_by_key(m_value, key.get());
|
RJP_value* removed = rjp_remove_member_by_key(m_value, key.data());
|
||||||
return create_managed(removed);
|
return create_managed(removed);
|
||||||
}
|
}
|
||||||
value& object::remove(value& val){
|
value& object::remove(value& val){
|
||||||
@ -103,8 +103,8 @@ namespace rjp{
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
void object::destroy(const rexy::string_view& key){
|
void object::destroy(rexy::string_view key){
|
||||||
rjp_free_member_by_key(m_value, key.get());
|
rjp_free_member_by_key(m_value, key.data());
|
||||||
}
|
}
|
||||||
void object::destroy(value&& val){
|
void object::destroy(value&& val){
|
||||||
rjp_free_member(m_value, val.raw());
|
rjp_free_member(m_value, val.raw());
|
||||||
@ -134,13 +134,13 @@ namespace rjp{
|
|||||||
object::size_type object::size(void)const{
|
object::size_type object::size(void)const{
|
||||||
return rjp_num_members(m_value);
|
return rjp_num_members(m_value);
|
||||||
}
|
}
|
||||||
value object::search(const rexy::string_view& key)const{
|
value object::search(rexy::string_view key)const{
|
||||||
RJP_value* result = rjp_search_member(m_value, key.get());
|
RJP_value* result = rjp_search_member(m_value, key.data());
|
||||||
return create_unmanaged(result);
|
return create_unmanaged(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
RJP_value* object::add_member_impl(const rexy::string_view& key){
|
RJP_value* object::add_member_impl(rexy::string_view key){
|
||||||
return rjp_new_member(m_value, key.get(), key.length());
|
return rjp_new_member(m_value, key.data(), key.length());
|
||||||
}
|
}
|
||||||
RJP_value* object::add_member_impl(string&& key){
|
RJP_value* object::add_member_impl(string&& key){
|
||||||
auto length = key.length();
|
auto length = key.length();
|
||||||
|
|||||||
@ -57,8 +57,8 @@ namespace rjp{
|
|||||||
s.reset(rjp_to_json(val.raw(), format));
|
s.reset(rjp_to_json(val.raw(), format));
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
parse_res parse_json(const rexy::string_base<char>& str, RJP_parse_flag flags){
|
parse_res parse_json(rexy::string_view str, RJP_parse_flag flags){
|
||||||
return parse_json(str.get(), flags);
|
return parse_json(str.data(), flags);
|
||||||
}
|
}
|
||||||
parse_res parse_json(const char* str, RJP_parse_flag flags){
|
parse_res parse_json(const char* str, RJP_parse_flag flags){
|
||||||
RJP_parse_error err = {};
|
RJP_parse_error err = {};
|
||||||
|
|||||||
@ -22,10 +22,12 @@
|
|||||||
|
|
||||||
namespace rjp{
|
namespace rjp{
|
||||||
|
|
||||||
string_val::string_val(const rexy::string_view& str):
|
using namespace rexy::str_literals;
|
||||||
value(rjp_new_string(str.get(), str.length()), true){}
|
|
||||||
|
string_val::string_val(rexy::string_view str):
|
||||||
|
value(rjp_new_string(str.data(), str.length()), true){}
|
||||||
string_val::string_val(string&& str):
|
string_val::string_val(string&& str):
|
||||||
value(rjp_new_string_steal(str.get(), str.length()), true)
|
value(rjp_new_string_steal(str.data(), str.length()), true)
|
||||||
{
|
{
|
||||||
str.release();
|
str.release();
|
||||||
}
|
}
|
||||||
@ -47,15 +49,15 @@ namespace rjp{
|
|||||||
if(rjp_value_type(m_value) != rjp_json_string)
|
if(rjp_value_type(m_value) != rjp_json_string)
|
||||||
rjp_set_string(m_value, "", 0);
|
rjp_set_string(m_value, "", 0);
|
||||||
}
|
}
|
||||||
string_val::string_val(const value& val, const rexy::string_base<char>& i):
|
string_val::string_val(const value& val, rexy::string_view i):
|
||||||
value(val)
|
value(val)
|
||||||
{
|
{
|
||||||
rjp_set_string(m_value, i.get(), i.length());
|
rjp_set_string(m_value, i.data(), i.length());
|
||||||
}
|
}
|
||||||
string_val::string_val(value&& val, const rexy::string_base<char>& i):
|
string_val::string_val(value&& val, rexy::string_view i):
|
||||||
value(std::move(val))
|
value(std::move(val))
|
||||||
{
|
{
|
||||||
rjp_set_string(m_value, i.get(), i.length());
|
rjp_set_string(m_value, i.data(), i.length());
|
||||||
}
|
}
|
||||||
string_val::string_val(const value& val, string&& i):
|
string_val::string_val(const value& val, string&& i):
|
||||||
value(val)
|
value(val)
|
||||||
@ -77,8 +79,8 @@ namespace rjp{
|
|||||||
string string_val::steal(void){
|
string string_val::steal(void){
|
||||||
return string(m_value);
|
return string(m_value);
|
||||||
}
|
}
|
||||||
void string_val::set(const rexy::string_base<char>& str){
|
void string_val::set(rexy::string_view str){
|
||||||
rjp_set_string(m_value, str.get(), str.length());
|
rjp_set_string(m_value, str.data(), str.length());
|
||||||
}
|
}
|
||||||
void string_val::set(string&& str){
|
void string_val::set(string&& str){
|
||||||
auto length = str.length();
|
auto length = str.length();
|
||||||
|
|||||||
@ -3,6 +3,8 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
using namespace rexy::str_literals;
|
||||||
|
|
||||||
typedef struct{
|
typedef struct{
|
||||||
rjp::value (*create)(void);
|
rjp::value (*create)(void);
|
||||||
const char* res;
|
const char* res;
|
||||||
@ -337,17 +339,17 @@ static test_pair tests[] = {
|
|||||||
int run_test(test_pair* p){
|
int run_test(test_pair* p){
|
||||||
rjp::value test = p->create();
|
rjp::value test = p->create();
|
||||||
rjp::string buf = test.to_json(p->fmt);
|
rjp::string buf = test.to_json(p->fmt);
|
||||||
if(!buf){
|
if(buf.empty()){
|
||||||
if(!p->res)
|
if(!p->res)
|
||||||
return 1;
|
return 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int retval = !strcmp(buf, p->res);
|
int retval = !strcmp(buf.c_str(), p->res);
|
||||||
if(retval){
|
if(retval){
|
||||||
fprintf(stderr, "Success\n");
|
fprintf(stderr, "Success\n");
|
||||||
}else{
|
}else{
|
||||||
fprintf(stderr, "Failure\n");
|
fprintf(stderr, "Failure\n");
|
||||||
fprintf(stderr, "Expected: '%s'\nGot: '%s'\n", p->res, buf.get());
|
fprintf(stderr, "Expected: '%s'\nGot: '%s'\n", p->res, buf.c_str());
|
||||||
}
|
}
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,7 +20,7 @@ int handle_res(const rjp::parse_res& res){
|
|||||||
if(res.valid()){
|
if(res.valid()){
|
||||||
fprintf(stderr, "Accepted\n");
|
fprintf(stderr, "Accepted\n");
|
||||||
}else{
|
}else{
|
||||||
fprintf(stderr, "%s\n", res.errstr().get());
|
fprintf(stderr, "%s\n", res.errstr().data());
|
||||||
}
|
}
|
||||||
return !res.valid();
|
return !res.valid();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user