Class SensitiveOperatorCallMatcher

Inheritance Relationships

Base Type

  • public MatchCallback

Class Documentation

class sc_ast_matchers::SensitiveOperatorCallMatcher : public MatchCallback

class SensitiveOperatorCallMatcher

Public Functions

inline clang::CXXMemberCallExpr *getMemberExprCallExpr()
inline clang::MemberExpr *getMemberExprWithoutCall()
inline const clang::ArraySubscriptExpr *getMemberArraySubscriptExpr()
inline void registerMatchers(MatchFinder &finder)

This is the main matcher for identifying sensitivity lists.

The matcher starts in the constructor of a SystemC module.

  1. Within the constructor, we need to identify operator<< since that is the overloaded member used to add sensitivity parameters.

  2. We want to find every operator<< call with an argument, and those that have the FieldDecl used to be of a certain type (sc_event, sc_interface, …). This is done because those are the parameters that are allowed for the operator<<.

2a. For the argument, we identify a call expression (cxxMemberCallExpr), or just a MemberExpr that has a declaration of a FieldDecl. 2b. The parameters that are allowed in operator<< are the following.

  • sc_event

  • sc_interface

  • sc_event_finder

  • sc_port_base

inline virtual void run(const MatchFinder::MatchResult &result)