From: Soumya AR <soum...@nvidia.com> This patch adds a get_map () method to the JSON object class to provide access to the underlying hash map that stores the JSON key-value pairs.
It also reorganizes the private and public sections of the class to expose the map_t typedef, which is the return type of get_map(). This change is needed to allow traversal of key-value pairs when parsing user-provided JSON tuning data. This patch was bootstrapped and regtested on aarch64-linux-gnu, no regression. Signed-off-by: Soumya AR <soum...@nvidia.com> gcc/ChangeLog: * json.h (class object): Add get_map () method. --- gcc/json.h | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/gcc/json.h b/gcc/json.h index e369244cf8b..6fc2ac62e2c 100644 --- a/gcc/json.h +++ b/gcc/json.h @@ -94,7 +94,16 @@ class value class object : public value { - public: +private: + typedef hash_map<char *, value *, + simple_hashmap_traits<nofree_string_hash, value *> > + map_t; + map_t m_map; + + /* Keep track of order in which keys were inserted. */ + auto_vec<const char *> m_keys; + +public: ~object (); enum kind get_kind () const final override { return JSON_OBJECT; } @@ -120,20 +129,14 @@ class object : public value value *get (const char *key) const; + const map_t &get_map () const { return m_map; } + void set_string (const char *key, const char *utf8_value); void set_integer (const char *key, long v); void set_float (const char *key, double v); /* Set to literal true/false. */ void set_bool (const char *key, bool v); - - private: - typedef hash_map <char *, value *, - simple_hashmap_traits<nofree_string_hash, value *> > map_t; - map_t m_map; - - /* Keep track of order in which keys were inserted. */ - auto_vec <const char *> m_keys; }; /* Subclass of value for arrays. */ -- 2.44.0