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 #include <mutex>
10 
11 namespace horizon {
12 enum class RulesCheckCacheID { NONE, BOARD_IMAGE, NET_PINS };
13 
15 public:
16  virtual ~RulesCheckCacheBase()
17  {
18  }
19 };
20 
22 public:
24  const CanvasPatch *get_canvas() const;
25 
26 private:
27  CanvasPatch canvas;
28 };
29 
31 public:
33  const std::map<class Net *,
34  std::deque<std::tuple<class Component *, const class Gate *, const class Pin *, UUID, Coordi>>> &
35  get_net_pins() const;
36 
37 private:
38  std::map<class Net *,
39  std::deque<std::tuple<class Component *, const class Gate *, const class Pin *, UUID, Coordi>>>
40  net_pins;
41 };
42 
44 public:
45  RulesCheckCache(class IDocument *c);
46  RulesCheckCacheBase *get_cache(RulesCheckCacheID id);
47  void clear();
48 
49 private:
50  std::map<RulesCheckCacheID, std::unique_ptr<RulesCheckCacheBase>> cache;
51  class IDocument *core;
52  std::mutex mutex;
53 };
54 } // namespace horizon
horizon::IDocument
Definition: idocument.hpp:5
horizon::RulesCheckCache
Definition: cache.hpp:43
horizon::CanvasPatch
Definition: canvas_patch.hpp:6
horizon::Net
Definition: net.hpp:15
horizon::RulesCheckCacheBase
Definition: cache.hpp:14
horizon::RulesCheckCacheNetPins
Definition: cache.hpp:30
horizon::RulesCheckCacheBoardImage
Definition: cache.hpp:21