Horizon
cache.hpp
1 #pragma once
2 #include "canvas/canvas_patch.hpp"
3 #include "common/common.hpp"
4 #include "pool/entity.hpp"
5 #include "util/uuid.hpp"
6 #include <deque>
7 #include <map>
8 #include <memory>
9 
10 namespace horizon {
11 enum class RulesCheckCacheID { NONE, BOARD_IMAGE, NET_PINS };
12 
14 public:
15  virtual ~RulesCheckCacheBase()
16  {
17  }
18 };
19 
21 public:
23  const CanvasPatch *get_canvas() const;
24 
25 private:
26  CanvasPatch canvas;
27 };
28 
30 public:
31  RulesCheckCacheNetPins(class Core *c);
32  const std::map<class Net *,
33  std::deque<std::tuple<class Component *, const class Gate *, const class Pin *, UUID, Coordi>>> &
34  get_net_pins() const;
35 
36 private:
37  std::map<class Net *,
38  std::deque<std::tuple<class Component *, const class Gate *, const class Pin *, UUID, Coordi>>>
39  net_pins;
40 };
41 
43 public:
44  RulesCheckCache(class Core *c);
45  RulesCheckCacheBase *get_cache(RulesCheckCacheID id);
46  void clear();
47 
48 private:
49  std::map<RulesCheckCacheID, std::unique_ptr<RulesCheckCacheBase>> cache;
50  class Core *core;
51 };
52 } // namespace horizon
Definition: cache.hpp:29
Definition: canvas_patch.hpp:6
Definition: cache.hpp:42
Definition: cache.hpp:13
Definition: cache.hpp:20
Where Tools and and documents meet.
Definition: core.hpp:249
Definition: block.cpp:7
Definition: net.hpp:16