52 GateLibrary(
const std::filesystem::path& path,
const std::string&
name);
60 std::string get_name()
const;
67 std::filesystem::path
get_path()
const;
75 void set_path(
const std::filesystem::path& modified_path);
83 void set_name(
const std::string& modified_name);
90 void set_gate_location_data_category(
const std::string& category);
97 const std::string& get_gate_location_data_category()
const;
104 void set_gate_location_data_identifiers(
const std::string& x_coordinate,
const std::string& y_coordinate);
111 const std::pair<std::string, std::string>& get_gate_location_data_identifiers()
const;
141 bool contains_gate_type(GateType* gate_type)
const;
149 bool contains_gate_type_by_name(
const std::string&
name)
const;
157 GateType* get_gate_type_by_name(
const std::string&
name)
const;
166 std::unordered_map<std::string, GateType*> get_gate_types(
const std::function<
bool(
const GateType*)>& filter =
nullptr)
const;
174 bool mark_vcc_gate_type(GateType* gate_type);
181 std::unordered_map<std::string, GateType*> get_vcc_gate_types()
const;
189 bool mark_gnd_gate_type(GateType* gate_type);
196 std::unordered_map<std::string, GateType*> get_gnd_gate_types()
const;
203 void add_include(
const std::string& include);
210 std::vector<std::string> get_includes()
const;
212 void remove_gate_type(
const std::string&
name);
216 std::filesystem::path m_path;
218 std::string m_gate_location_data_category =
"generic";
219 std::pair<std::string, std::string> m_gate_location_data_identifiers = {
"X_COORDINATE",
"Y_COORDINATE"};
221 u32 m_next_gate_type_id;
223 std::vector<std::unique_ptr<GateType>> m_gate_types;
224 std::unordered_map<std::string, GateType*> m_gate_type_map;
225 std::unordered_map<std::string, GateType*> m_vcc_gate_types;
226 std::unordered_map<std::string, GateType*> m_gnd_gate_types;
228 std::vector<std::string> m_includes;
230 GateLibrary(
const GateLibrary&) =
delete;
231 GateLibrary& operator=(
const GateLibrary&) =
delete;
233 u32 get_unique_gate_type_id();
std::vector< Gate * > get_path(const Gate *gate, bool get_successors, std::set< GateTypeProperty > stop_properties, std::unordered_map< u32, std::vector< Gate * >> &cache)