Horizon
Loading...
Searching...
No Matches
line_net.hpp
1#pragma once
2#include "util/uuid.hpp"
3#include "nlohmann/json_fwd.hpp"
4#include "common/common.hpp"
5#include "util/uuid_ptr.hpp"
6#include "util/uuid_path.hpp"
7#include <vector>
8#include <map>
9
10namespace horizon {
11using json = nlohmann::json;
12
17class LineNet {
18public:
19 enum class End { TO, FROM };
20
21 LineNet(const UUID &uu, const json &j, class Sheet *sheet = nullptr);
22 LineNet(const UUID &uu);
23
24 void update_refs(class Sheet &sheet);
25 bool is_connected_to_symbol(const UUID &uu_sym, const UUID &uu_pin) const;
26 bool is_connected_to_block_symbol(const UUID &uu_sym, const UUID &uu_port) const;
27 UUID get_uuid() const;
28 bool coord_on_line(const Coordi &coord) const;
29
30 uuid_ptr<class Net> net = nullptr;
31 uuid_ptr<class Bus> bus = nullptr;
32 UUID net_segment = UUID();
33
34
35 UUID uuid;
36
37 class Connection {
38 public:
40 {
41 }
42 Connection(const json &j, Sheet *sheet);
44 uuid_ptr<class SchematicSymbol> symbol = nullptr;
45 uuid_ptr<class SymbolPin> pin = nullptr;
46 uuid_ptr<class BusRipper> bus_ripper = nullptr;
47 uuid_ptr<class SchematicBlockSymbol> block_symbol = nullptr;
49 bool operator<(const Connection &other) const;
50 bool operator==(const Connection &other) const;
51
52 void connect(SchematicJunction *j);
53 void connect(BusRipper *r);
54 void connect(SchematicSymbol *j, SymbolPin *pin);
55 void connect(SchematicBlockSymbol *j, BlockSymbolPort *port);
56 UUIDPath<2> get_pin_path() const;
57 UUIDPath<2> get_port_path() const;
58 bool is_junc() const;
59 bool is_pin() const;
60 bool is_bus_ripper() const;
61 bool is_port() const;
62 UUID get_net_segment() const;
63 void update_refs(class Sheet &sheet);
64 Coordi get_position() const;
65 json serialize() const;
66 };
67
68 Connection from;
69 Connection to;
70
71
72 json serialize() const;
73};
74} // namespace horizon
Definition block_symbol.hpp:20
Make a Bus member's Net available on the schematic.
Definition bus_ripper.hpp:15
Definition line_net.hpp:37
LineNet is similar to Line, except it denotes electrical connection.
Definition line_net.hpp:17
Definition schematic_block_symbol.hpp:12
Definition schematic_junction.hpp:6
Definition schematic_symbol.hpp:15
Definition sheet.hpp:42
Definition symbol.hpp:20
Stores a sequence of up to 3 UUIDs.
Definition uuid_path.hpp:12
This class encapsulates a UUID and allows it to be uses as a value type.
Definition uuid.hpp:16
Definition uuid_ptr.hpp:8
a class to store JSON values
Definition json.hpp:177
basic_json<> json
default JSON class
Definition json_fwd.hpp:62