On 3/2/2026 03:32, David Malcolm wrote:
On Tue, 2026-02-03 at 01:49 +0800, Yangyu Chen wrote:
Currently, the object class in json.h does not provide a way to
iterate
over its keys.

FWIW there are these member functions:
   size_t get_num_keys () const { return m_keys.length (); }
   const char *get_key (size_t i) const { return m_keys[i]; }
and a begin/end pair could be added to support C++-style "for" loops,
but I don't object to the patch as is.

Dave


Thanks! This is a long-standing patch. At the time, such an API did not exist, and I didn't notice that either after that. I can use them for the next revision now!

Thanks,
Yangyu Chen

This commit adds an `iterate` method to the object class,
allowing users to iterate over the keys of a JSON object.

Signed-off-by: Yangyu Chen <[email protected]>

gcc/ChangeLog:

        * json.h (class object): Add iterate method to object class.
---
  gcc/json.h | 5 +++++
  1 file changed, 5 insertions(+)

diff --git a/gcc/json.h b/gcc/json.h
index fabe2fe0886a..0f01ee19a109 100644
--- a/gcc/json.h
+++ b/gcc/json.h
@@ -239,6 +239,11 @@ class object : public value
    void set_enum (const enum_property<EnumType> &property,
                 EnumType value);
+  bool iterate (unsigned i, const char **key) const
+  {
+    return m_keys.iterate (i, key);
+  }
+
    static int compare (const json::object &obj_a, const json::object
&obj_b);
   size_t get_num_keys () const { return m_keys.length (); }

Reply via email to