HAL
ff_component.cpp
Go to the documentation of this file.
2 
3 namespace hal
4 {
5  FFComponent::FFComponent(std::unique_ptr<GateTypeComponent> component, const BooleanFunction& next_state_bf, const BooleanFunction& clock_bf)
6  : m_component(std::move(component)), m_next_state_bf(next_state_bf.clone()), m_clock_bf(clock_bf.clone())
7  {
8  }
9 
11  {
12  return m_type;
13  }
14 
16  {
17  return component->get_type() == m_type;
18  }
19 
20  std::vector<GateTypeComponent*> FFComponent::get_components(const std::function<bool(const GateTypeComponent*)>& filter) const
21  {
22  if (m_component != nullptr)
23  {
24  std::vector<GateTypeComponent*> res = m_component->get_components(filter);
25  if (filter)
26  {
27  if (filter(m_component.get()))
28  {
29  res.push_back(m_component.get());
30  }
31  }
32  else
33  {
34  res.push_back(m_component.get());
35  }
36 
37  return res;
38  }
39 
40  return {};
41  }
42 
44  {
45  return m_next_state_bf.clone();
46  }
47 
49  {
50  m_next_state_bf = next_state_bf.clone();
51  }
52 
54  {
55  return m_clock_bf.clone();
56  }
57 
59  {
60  m_clock_bf = clock_bf.clone();
61  }
62 
64  {
65  return m_async_reset_bf.clone();
66  }
67 
69  {
70  m_async_reset_bf = async_reset_bf.clone();
71  }
72 
74  {
75  return m_async_set_bf.clone();
76  }
77 
79  {
80  m_async_set_bf = async_set_bf.clone();
81  }
82 
83  const std::pair<AsyncSetResetBehavior, AsyncSetResetBehavior>& FFComponent::get_async_set_reset_behavior() const
84  {
85  return m_async_set_reset_behavior;
86  }
87 
89  {
90  m_async_set_reset_behavior = std::make_pair(behav_state, behav_neg_state);
91  }
92 
93 } // namespace hal
BooleanFunction clone() const
void set_clock_function(const BooleanFunction &clock_bf)
void set_async_set_reset_behavior(const AsyncSetResetBehavior behav_state, const AsyncSetResetBehavior behav_neg_state)
void set_async_set_function(const BooleanFunction &async_set_bf)
BooleanFunction get_clock_function() const
const std::pair< AsyncSetResetBehavior, AsyncSetResetBehavior > & get_async_set_reset_behavior() const
FFComponent(std::unique_ptr< GateTypeComponent > component, const BooleanFunction &next_state_bf, const BooleanFunction &clock_bf)
Definition: ff_component.cpp:5
BooleanFunction get_async_set_function() const
static bool is_class_of(const GateTypeComponent *component)
BooleanFunction get_async_reset_function() const
BooleanFunction get_next_state_function() const
void set_next_state_function(const BooleanFunction &next_state_bf)
std::vector< GateTypeComponent * > get_components(const std::function< bool(const GateTypeComponent *)> &filter=nullptr) const override
void set_async_reset_function(const BooleanFunction &async_reset_bf)
ComponentType get_type() const override
virtual ComponentType get_type() const =0