3 #include "component.hpp"
4 #include "nlohmann/json_fwd.hpp"
6 #include "net_class.hpp"
7 #include "util/uuid.hpp"
8 #include "bom_export_settings.hpp"
9 #include "block_instance.hpp"
14 #include "util/item_set.hpp"
15 #include "util/uuid_vec.hpp"
16 #include "util/template_util.hpp"
34 static std::map<std::string, std::string> peek_project_meta(
const std::string &filename);
35 static std::set<UUID> peek_instantiated_blocks(
const std::string &filename);
39 std::map<UUID, Net> nets;
40 std::map<UUID, Bus> buses;
41 std::map<UUID, Component> components;
42 std::map<UUID, BlockInstance> block_instances;
43 std::map<UUID, NetClass> net_classes;
46 std::map<UUIDVec, BlockInstanceMapping> block_instance_mappings;
48 std::map<UUID, std::string> group_names;
49 std::map<UUID, std::string> tag_names;
50 std::map<std::string, std::string> project_meta;
51 std::string get_group_name(
const UUID &uu)
const;
52 std::string get_tag_name(
const UUID &uu)
const;
55 std::map<const class Part *, BOMRow> get_BOM(
const BOMExportSettings &settings)
const;
57 bool can_swap_gates(
const UUID &comp,
const UUID &g1,
const UUID &g2)
const;
58 void swap_gates(
const UUID &comp,
const UUID &g1,
const UUID &g2);
61 void operator=(
const Block &block);
63 void merge_nets(
Net *net,
Net *into);
69 void vacuum_group_tag_names();
77 std::set<UUIDPath<3>> pins;
78 std::set<UUIDPath<2>> ports;
82 void update_connection_count();
84 void update_diffpairs();
92 std::string get_net_name(
const UUID &uu)
const;
94 ItemSet get_pool_items_used()
const;
96 void update_non_top(
Block &other)
const;
98 void create_instance_mappings();
100 Block flatten()
const;
102 UUID get_uuid()
const;
105 std::string get_refdes(
const Component &comp,
const UUIDVec &instance_path)
const;
106 void set_refdes(
Component &comp,
const UUIDVec &instance_path,
const std::string &rd);
107 void set_nopopulate(
Component &comp,
const UUIDVec &instance_path,
bool nopopulate);
110 BlockItem(make_const_ref_t<c, Block> b,
const UUIDVec &p) : block(b), instance_path(p)
113 make_const_ref_t<c, Block> block;
114 UUIDVec instance_path;
117 std::vector<BlockItem<false>> get_instantiated_blocks();
118 std::vector<BlockItem<true>> get_instantiated_blocks()
const;
119 std::vector<BlockItem<false>> get_instantiated_blocks_and_top();
120 std::vector<BlockItem<true>> get_instantiated_blocks_and_top()
const;
122 bool can_delete_power_net(
const UUID &uu)
const;
124 bool can_add_block_instance(
const UUID &where,
const UUID &block_inst)
const;
126 json serialize()
const;
128 static const size_t max_instance_path_len;
129 static bool instance_path_too_long(
const UUIDVec &path,
const char *funcname);
133 std::vector<BlockItem<false>> get_instantiated_blocks(
bool inc_top);
134 std::vector<BlockItem<true>> get_instantiated_blocks(
bool inc_top)
const;
Definition: bom_export_settings.hpp:12
Definition: block_instance.hpp:13
A block is one level of hierarchy in the netlist.
Definition: block.hpp:29
Net * insert_net()
creates new net
Definition: block.cpp:155
void vacuum_nets()
deletes unreferenced nets
Definition: block.cpp:206
A Component is an instanced Entity in a Block.
Definition: component.hpp:41
Definition: iblock_provider.hpp:5
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
Definition: block.hpp:109
Takes pins specified by pins&ports and moves them over to net.
Definition: block.hpp:76