C++ Device API Reference Manual
Reference documentation for the Simics C++ Device API.
 
Loading...
Searching...
No Matches
pattern.h
Go to the documentation of this file.
1/*
2 © 2023 Intel Corporation
3
4 This software and the related documents are Intel copyrighted materials, and
5 your use of them is governed by the express license under which they were
6 provided to you ("License"). Unless the License provides otherwise, you may
7 not use, modify, copy, publish, distribute, disclose or transmit this software
8 or the related documents without Intel's prior written permission.
9
10 This software and the related documents are provided as is, with no express or
11 implied warranties, other than those that are expressly stated in the License.
12*/
13
14// -*- C++ -*-
15
16#ifndef CPP_API_EXTENSIONS_SRC_SME_PATTERN_RULES_PATTERN_H
17#define CPP_API_EXTENSIONS_SRC_SME_PATTERN_RULES_PATTERN_H
18
20#include "sme/aqpp/print/sme_print.hpp"
21#include <iostream>
22#include <ios>
23namespace sme {
24
25 namespace rules {
26
32 {
33 public:
34
39 uint64_t m_mask;
40
45 uint64_t m_start;
46
51 uint64_t m_end;
52
60 pattern( uint64_t _mask, uint64_t _start, uint64_t _end)
62 , m_mask( _mask)
63 , m_start( _start)
64 , m_end( _end)
65 {
66 }
67
72 virtual ~pattern() {;}
73
80 virtual void process_rule( uint64_t _old_value, uint64_t & _new_value) {
81 if( is_active() && is_bound() && ( ( _old_value & m_mask) == m_start) && ( ( _new_value & m_mask) == m_end) ) {
82 SIM_DEBUG_END( "true");
83 m_lambda();
84 } else {
85 SIM_DEBUG_END( "false");
86 }
87 }
88 };
89
90 }
91
92}
93
94#endif /*NOTIFICATION_RULE_PATTERN_H_*/
Definition: I_pattern_rule.h:86
std::function< void()> m_lambda
Definition: I_pattern_rule.h:88
virtual _always_inline bool is_bound()
has the lambda callback been bound.
Definition: I_pattern_rule.h:99
_always_inline bool is_active()
reports if rule is active for processing.
Definition: I_pattern_rule.h:73
rule executes if the masked pattern matches the start (old) and end (new) values.
Definition: pattern.h:32
uint64_t m_mask
mask to apply for rule evaluation.
Definition: pattern.h:39
uint64_t m_start
initial value to match with mask.
Definition: pattern.h:45
pattern(uint64_t _mask, uint64_t _start, uint64_t _end)
Construct a new pattern object.
Definition: pattern.h:60
virtual ~pattern()
Destroy the pattern object.
Definition: pattern.h:72
virtual void process_rule(uint64_t _old_value, uint64_t &_new_value)
process rule evaluation between old and new values.
Definition: pattern.h:80
uint64_t m_end
new value to match with mask.
Definition: pattern.h:51
Definition: expression_vector.h:25