slang-netlist  0.9.0
Loading...
Searching...
No Matches
VisitAll.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "slang/ast/ASTVisitor.h"
4#include "slang/ast/statements/MiscStatements.h"
5#include "slang/ast/symbols/InstanceSymbols.h"
6#include "slang/ast/symbols/ValueSymbol.h"
7#include "slang/ast/symbols/VariableSymbols.h"
8
9#include <cstdint>
10
11namespace slang::netlist {
12
18struct VisitAll : public ast::ASTVisitor<VisitAll, ast::VisitFlags::AllGood> {
19 uint64_t count = 0;
20
21 void handle(const ast::ValueSymbol &symbol) { count++; }
22
26 void handle(const ast::InstanceSymbol &symbol) {
27 if (!symbol.body.flags.has(ast::InstanceFlags::Uninstantiated)) {
28 visitDefault(symbol);
29 }
30 }
31
37 void handle(const ast::VariableDeclStatement &stmt) {
38 if (stmt.symbol.lifetime != ast::VariableLifetime::Static) {
39 if (auto *init = stmt.symbol.getInitializer()) {
40 init->visit(*this);
41 }
42 }
43 }
44};
45
46} // namespace slang::netlist
Definition Utilities.hpp:16
Definition VisitAll.hpp:18
void handle(const ast::ValueSymbol &symbol)
Definition VisitAll.hpp:21
void handle(const ast::InstanceSymbol &symbol)
Definition VisitAll.hpp:26
void handle(const ast::VariableDeclStatement &stmt)
Definition VisitAll.hpp:37
uint64_t count
Definition VisitAll.hpp:19