diff options
author | Owen Avery <powerboat9.gamer@gmail.com> | 2023-10-03 17:50:14 -0400 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-01-30 12:36:46 +0100 |
commit | b71668068b1d7bf912fc345252bbc5f9ed6d3927 (patch) | |
tree | 765ab889276f29adcb8a76e656be0a6de363f905 | |
parent | 8fa748692cfbe08e658236fbe69d1b06f2f0b5af (diff) | |
download | gcc-b71668068b1d7bf912fc345252bbc5f9ed6d3927.zip gcc-b71668068b1d7bf912fc345252bbc5f9ed6d3927.tar.gz gcc-b71668068b1d7bf912fc345252bbc5f9ed6d3927.tar.bz2 |
gccrs: Create base class for TupleStructItems and TuplePatternItems
gcc/rust/ChangeLog:
* hir/tree/rust-hir-pattern.h
(class TupleItems): New.
(class TupleStructItems): Inherit from TupleItems.
(class TuplePatternItems): Likewise.
Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
-rw-r--r-- | gcc/rust/hir/tree/rust-hir-pattern.h | 47 |
1 files changed, 23 insertions, 24 deletions
diff --git a/gcc/rust/hir/tree/rust-hir-pattern.h b/gcc/rust/hir/tree/rust-hir-pattern.h index 33025bf..e65a62f 100644 --- a/gcc/rust/hir/tree/rust-hir-pattern.h +++ b/gcc/rust/hir/tree/rust-hir-pattern.h @@ -777,8 +777,8 @@ protected: } }; -// Base abstract class for patterns used in TupleStructPattern -class TupleStructItems : public FullVisitable +// Base abstract class for TupleStructItems and TuplePatternItems +class TupleItems : public FullVisitable { public: enum ItemType @@ -787,25 +787,38 @@ public: RANGED, }; - virtual ~TupleStructItems () {} + virtual ~TupleItems () {} // TODO: should this store location data? // Unique pointer custom clone function - std::unique_ptr<TupleStructItems> clone_tuple_struct_items () const + std::unique_ptr<TupleItems> clone_tuple_items () const { - return std::unique_ptr<TupleStructItems> (clone_tuple_items_impl ()); + return std::unique_ptr<TupleItems> (clone_tuple_items_impl ()); } + virtual ItemType get_item_type () const = 0; + virtual std::string as_string () const = 0; - virtual void accept_vis (HIRFullVisitor &vis) = 0; +protected: + // pure virtual clone implementation + virtual TupleItems *clone_tuple_items_impl () const = 0; +}; - virtual ItemType get_item_type () const = 0; +// Base abstract class for patterns used in TupleStructPattern +class TupleStructItems : public TupleItems +{ +public: + // Unique pointer custom clone function + std::unique_ptr<TupleStructItems> clone_tuple_struct_items () const + { + return std::unique_ptr<TupleStructItems> (clone_tuple_items_impl ()); + } protected: // pure virtual clone implementation - virtual TupleStructItems *clone_tuple_items_impl () const = 0; + virtual TupleStructItems *clone_tuple_items_impl () const override = 0; }; // Class for non-ranged tuple struct pattern patterns @@ -1011,32 +1024,18 @@ protected: }; // Base abstract class representing TuplePattern patterns -class TuplePatternItems : public FullVisitable +class TuplePatternItems : public TupleItems { public: - enum ItemType - { - MULTIPLE, - RANGED, - }; - - virtual ~TuplePatternItems () {} - - // TODO: should this store location data? - // Unique pointer custom clone function std::unique_ptr<TuplePatternItems> clone_tuple_pattern_items () const { return std::unique_ptr<TuplePatternItems> (clone_tuple_items_impl ()); } - virtual std::string as_string () const = 0; - - virtual ItemType get_item_type () const = 0; - protected: // pure virtual clone implementation - virtual TuplePatternItems *clone_tuple_items_impl () const = 0; + virtual TuplePatternItems *clone_tuple_items_impl () const override = 0; }; // Class representing TuplePattern patterns where there are multiple patterns |