23 #ifndef _DB_JSON_PATH_HPP_ 24 #define _DB_JSON_PATH_HPP_ 31 #include <unordered_set> 72 std::string dump_json_path ()
const;
73 int parse (
const char *path);
78 std::vector<const JSON_VALUE *> extract (
const JSON_DOC &)
const;
85 size_t get_token_count ()
const;
86 bool is_root_path ()
const;
87 bool is_last_array_index_less_than (
size_t size)
const;
88 bool is_last_token_array_index_zero ()
const;
89 bool points_to_array_cell ()
const;
90 bool parent_exists (
JSON_DOC &jd)
const;
91 bool contains_wildcard ()
const;
93 void push_array_index (
unsigned long idx);
94 void push_array_index_wildcard ();
95 void push_object_key (std::string &&
object_key);
96 void push_object_key_wildcard ();
97 void push_double_wildcard ();
105 int from_json_pointer (
const std::string &pointer_path);
107 int validate_and_create_from_json_path (std::string &sql_path);
110 const JSON_PATH &path,
const token_containter_type::const_iterator &it2);
112 static void extract_from_subtree (
const JSON_PATH &path,
size_t tkn_array_offset,
113 const JSON_VALUE &jv, std::unordered_set<const JSON_VALUE *> &unique_elements,
114 std::vector<const JSON_VALUE *> &vals);
token_containter_type m_path_tokens
const std::string & get_object_key() const
static bool match_pattern(const PATH_TOKEN &matcher, const PATH_TOKEN &matchee)
int db_json_path_unquote_object_keys(std::string &sql_path)
rapidjson::MemoryPoolAllocator< JSON_PRIVATE_ALLOCATOR > JSON_PRIVATE_MEMPOOL
unsigned long get_array_index() const
rapidjson::GenericValue< JSON_ENCODING, JSON_PRIVATE_MEMPOOL > JSON_VALUE
std::vector< PATH_TOKEN > token_containter_type
unsigned long m_array_idx