Horizon
Loading...
Searching...
No Matches
src
rules
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 "util/uuid_vec.hpp"
7
#include <vector>
8
#include <map>
9
#include <memory>
10
#include <mutex>
11
12
namespace
horizon {
13
enum class
RulesCheckCacheID { NONE, BOARD_IMAGE, NET_PINS };
14
15
class
RulesCheckCacheBase
{
16
public
:
17
virtual
~RulesCheckCacheBase
()
18
{
19
}
20
};
21
22
class
RulesCheckCacheBoardImage
:
public
RulesCheckCacheBase
{
23
public
:
24
static
const
RulesCheckCacheID
id
= RulesCheckCacheID::BOARD_IMAGE;
25
RulesCheckCacheBoardImage
(
class
IDocument
&c);
26
const
CanvasPatch
&get_canvas()
const
;
27
28
private
:
29
CanvasPatch
canvas;
30
};
31
32
class
RulesCheckCacheNetPins
:
public
RulesCheckCacheBase
{
33
public
:
34
static
const
RulesCheckCacheID
id
= RulesCheckCacheID::NET_PINS;
35
36
RulesCheckCacheNetPins
(
class
IDocument
&c);
37
struct
NetPin
{
38
UUID
comp;
39
const
class
Gate
&gate;
40
const
class
Pin
&pin;
41
UUID
sheet;
42
UUIDVec instance_path;
43
Coordi
location;
44
};
45
struct
NetInfo
{
46
std::string name;
47
bool
is_nc =
false
;
48
std::vector<NetPin> pins;
49
};
50
using
NetPins = std::map<UUID, NetInfo>;
51
const
NetPins &get_net_pins()
const
;
52
53
private
:
54
NetPins net_pins;
55
};
56
57
class
RulesCheckCache
{
58
public
:
59
RulesCheckCache
(
class
IDocument
&c);
60
void
clear();
61
template
<
typename
T>
const
T &get_cache()
62
{
63
return
dynamic_cast<
const
T &
>
(get_cache(T::id));
64
}
65
66
private
:
67
const
RulesCheckCacheBase
&get_cache(RulesCheckCacheID
id
);
68
std::map<RulesCheckCacheID, std::unique_ptr<RulesCheckCacheBase>> cache;
69
class
IDocument
&core;
70
std::mutex mutex;
71
};
72
}
// namespace horizon
horizon::CanvasPatch
Definition
canvas_patch.hpp:7
horizon::Coord< int64_t >
horizon::Gate
Definition
gate.hpp:9
horizon::IDocument
Definition
idocument.hpp:5
horizon::Pin
A Pin represents a logical pin of a Unit.
Definition
unit.hpp:16
horizon::RulesCheckCacheBase
Definition
cache.hpp:15
horizon::RulesCheckCacheBoardImage
Definition
cache.hpp:22
horizon::RulesCheckCacheNetPins
Definition
cache.hpp:32
horizon::RulesCheckCache
Definition
cache.hpp:57
horizon::UUID
This class encapsulates a UUID and allows it to be uses as a value type.
Definition
uuid.hpp:16
horizon::RulesCheckCacheNetPins::NetInfo
Definition
cache.hpp:45
horizon::RulesCheckCacheNetPins::NetPin
Definition
cache.hpp:37
Generated by
1.9.8