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;
142 bool contains_gate_type(GateType* gate_type)
const;
150 bool contains_gate_type_by_name(
const std::string&
name)
const;
158 GateType* get_gate_type_by_name(
const std::string&
name)
const;
167 std::unordered_map<std::string, GateType*> get_gate_types(
const std::function<
bool(
const GateType*)>& filter =
nullptr)
const;
175 bool mark_vcc_gate_type(GateType* gate_type);
182 std::unordered_map<std::string, GateType*> get_vcc_gate_types()
const;
190 bool mark_gnd_gate_type(GateType* gate_type);
197 std::unordered_map<std::string, GateType*> get_gnd_gate_types()
const;
204 void add_include(
const std::string& inc);
211 std::vector<std::string> get_includes()
const;
213 void remove_gate_type(
const std::string&
name);
217 std::filesystem::path m_path;
219 std::string m_gate_location_data_category =
"generic";
220 std::pair<std::string, std::string> m_gate_location_data_identifiers = {
"X_COORDINATE",
"Y_COORDINATE"};
222 u32 m_next_gate_type_id;
224 std::vector<std::unique_ptr<GateType>> m_gate_types;
225 std::unordered_map<std::string, GateType*> m_gate_type_map;
226 std::unordered_map<std::string, GateType*> m_vcc_gate_types;
227 std::unordered_map<std::string, GateType*> m_gnd_gate_types;
229 std::vector<std::string> m_includes;
231 GateLibrary(
const GateLibrary&) =
delete;
232 GateLibrary& operator=(
const GateLibrary&) =
delete;
234 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)