ArmNN
 21.02
Observable.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
7 #include "IGraphObservable.hpp"
8 #include "Graph.hpp"
9 
10 namespace armnn
11 {
12 
13 template <typename ObservedType>
15 {
16 public:
17  using Iterator = typename std::list<ObservedType>::const_iterator;
18 
19  GraphObservable(Graph& subject, GraphEvent notifyOnEvent)
20  : m_Subject(&subject)
21  {
22  m_NotifyOnEvent = notifyOnEvent;
24  };
25 
26  void Clear() { m_ObservedObjects.clear(); };
27 
28  Iterator begin() { return m_ObservedObjects.begin(); }
29 
30  Iterator end() { return m_ObservedObjects.end(); }
31 
32 protected:
34  {
35  if (m_Subject)
36  {
38  }
39  }
40 
43  std::list<ObservedType> m_ObservedObjects;
44 };
45 
46 class AddedLayerObservable : public GraphObservable<Layer*>
47 {
48 public:
49  explicit AddedLayerObservable(Graph& subject)
51  {};
52 
53  void Update(Layer* graphLayer) override;
54 };
55 
56 class ErasedLayerNamesObservable : public GraphObservable<std::string>
57 {
58 public:
59  explicit ErasedLayerNamesObservable(Graph& subject)
60  : GraphObservable<std::string>(subject, GraphEvent::LayerErased)
61  {};
62 
63  void Update(Layer* graphLayer) override;
64 };
65 
66 } //namespace armnn
67 
void AttachObservable(IGraphObservable *const observable, GraphEvent notifyOnEvent)
Definition: Graph.hpp:208
Copyright (c) 2021 ARM Limited and Contributors.
typename std::list< Layer * >::const_iterator Iterator
Definition: Observable.hpp:17
GraphEvent m_NotifyOnEvent
Definition: Observable.hpp:41
GraphObservable(Graph &subject, GraphEvent notifyOnEvent)
Definition: Observable.hpp:19
ErasedLayerNamesObservable(Graph &subject)
Definition: Observable.hpp:59
virtual void Update(Layer *graphLayer)=0
std::list< ObservedType > m_ObservedObjects
Definition: Observable.hpp:43
AddedLayerObservable(Graph &subject)
Definition: Observable.hpp:49
void DetachObservable(IGraphObservable *const observable, GraphEvent notifyOnEvent)
Definition: Graph.hpp:212