Skip to content

Commit

Permalink
Support nested indices
Browse files Browse the repository at this point in the history
  • Loading branch information
leonardt committed Jul 30, 2020
1 parent de572f2 commit beaaaa0
Showing 1 changed file with 14 additions and 14 deletions.
28 changes: 14 additions & 14 deletions include/verilogAST.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -222,31 +222,19 @@ class Slice : public Expression {
};

class Index : public Expression {
std::variant<std::unique_ptr<Identifier>, std::unique_ptr<Attribute>,
std::unique_ptr<Slice>>
clone_index_value() const {
return std::visit(
[](auto&& value) -> std::variant<std::unique_ptr<Identifier>,
std::unique_ptr<Attribute>,
std::unique_ptr<Slice>> {
return value->clone();
},
this->value);
}

protected:
virtual Index* clone_impl() const override {
return new Index(this->clone_index_value(), this->index->clone());
};

public:
std::variant<std::unique_ptr<Identifier>, std::unique_ptr<Attribute>,
std::unique_ptr<Slice>>
std::unique_ptr<Slice>, std::unique_ptr<Index>>
value;
std::unique_ptr<Expression> index;

Index(std::variant<std::unique_ptr<Identifier>, std::unique_ptr<Attribute>,
std::unique_ptr<Slice>>
std::unique_ptr<Slice>, std::unique_ptr<Index>>
value,
std::unique_ptr<Expression> index)
: value(std::move(value)), index(std::move(index)){};
Expand All @@ -257,6 +245,18 @@ class Index : public Expression {
std::string toString() override;
~Index(){};
auto clone() const { return std::unique_ptr<Index>(clone_impl()); }

private:
std::variant<std::unique_ptr<Identifier>, std::unique_ptr<Attribute>,
std::unique_ptr<Slice>, std::unique_ptr<Index>>
clone_index_value() const {
return std::visit(
[](auto&& value)
-> std::variant<std::unique_ptr<Identifier>,
std::unique_ptr<Attribute>, std::unique_ptr<Slice>,
std::unique_ptr<Index>> { return value->clone(); },
this->value);
}
};

namespace BinOp {
Expand Down

0 comments on commit beaaaa0

Please sign in to comment.