diff options
author | Tom Tromey <tromey@adacore.com> | 2024-03-14 12:16:43 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2024-04-02 11:24:27 -0600 |
commit | 68d7f5b02f2e2d1eba7dca8701d340674f64329d (patch) | |
tree | 3f6874b480c79eca28732996e8402d19c216ef26 /gdb/ada-exp.y | |
parent | 48497d85e3b839b65d3376fcb8d345680ba68926 (diff) | |
download | gdb-68d7f5b02f2e2d1eba7dca8701d340674f64329d.zip gdb-68d7f5b02f2e2d1eba7dca8701d340674f64329d.tar.gz gdb-68d7f5b02f2e2d1eba7dca8701d340674f64329d.tar.bz2 |
Move "components" and "associations" into ada_parse_state
This patch moves the "components" and "associations" globals into
ada_parse_state.
Diffstat (limited to 'gdb/ada-exp.y')
-rw-r--r-- | gdb/ada-exp.y | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/gdb/ada-exp.y b/gdb/ada-exp.y index cb0618c..be726ec 100644 --- a/gdb/ada-exp.y +++ b/gdb/ada-exp.y @@ -64,6 +64,8 @@ struct name_info { static struct parser_state *pstate = NULL; +using namespace expr; + /* Data that must be held for the duration of a parse. */ struct ada_parse_state @@ -81,6 +83,12 @@ struct ada_parse_state return result.get (); } + /* The components being constructed during this parse. */ + std::vector<ada_component_up> components; + + /* The associations being constructed during this parse. */ + std::vector<ada_association_up> associations; + private: /* We don't have a good way to manage non-POD data in Yacc, so store @@ -125,8 +133,6 @@ static struct type *type_for_char (struct parser_state *, ULONGEST); static struct type *type_system_address (struct parser_state *); -using namespace expr; - /* Handle Ada type resolution for OP. DEPROCEDURE_P and CONTEXT_TYPE are passed to the resolve method, if called. */ static operation_up @@ -335,16 +341,13 @@ ada_funcall (int nargs) pstate->push (std::move (funcall)); } -/* The components being constructed during this parse. */ -static std::vector<ada_component_up> components; - /* Create a new ada_component_up of the indicated type and arguments, and push it on the global 'components' vector. */ template<typename T, typename... Arg> void push_component (Arg... args) { - components.emplace_back (new T (std::forward<Arg> (args)...)); + ada_parser->components.emplace_back (new T (std::forward<Arg> (args)...)); } /* Examine the final element of the 'components' vector, and return it @@ -354,7 +357,7 @@ push_component (Arg... args) static ada_choices_component * choice_component () { - ada_component *last = components.back ().get (); + ada_component *last = ada_parser->components.back ().get (); return gdb::checked_static_cast<ada_choices_component *> (last); } @@ -363,8 +366,8 @@ choice_component () static ada_component_up pop_component () { - ada_component_up result = std::move (components.back ()); - components.pop_back (); + ada_component_up result = std::move (ada_parser->components.back ()); + ada_parser->components.pop_back (); return result; } @@ -379,16 +382,13 @@ pop_components (int n) return result; } -/* The associations being constructed during this parse. */ -static std::vector<ada_association_up> associations; - /* Create a new ada_association_up of the indicated type and arguments, and push it on the global 'associations' vector. */ template<typename T, typename... Arg> void push_association (Arg... args) { - associations.emplace_back (new T (std::forward<Arg> (args)...)); + ada_parser->associations.emplace_back (new T (std::forward<Arg> (args)...)); } /* Pop the most recent association from the global stack, and return @@ -396,8 +396,8 @@ push_association (Arg... args) static ada_association_up pop_association () { - ada_association_up result = std::move (associations.back ()); - associations.pop_back (); + ada_association_up result = std::move (ada_parser->associations.back ()); + ada_parser->associations.pop_back (); return result; } @@ -1256,8 +1256,6 @@ ada_parse (struct parser_state *par_state) lexer_init (yyin); /* (Re-)initialize lexer. */ obstack_free (&temp_parse_space, NULL); obstack_init (&temp_parse_space); - components.clear (); - associations.clear (); assignments.clear (); iterated_associations.clear (); |