From a144dd72b6ab2befaa6246b62da252c5fd73f2c8 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Wed, 10 Aug 2016 14:21:34 +0200 Subject: o Adding missing files. --- core/include/trygvis/kicad/netlist.h | 98 ++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 core/include/trygvis/kicad/netlist.h (limited to 'core/include') diff --git a/core/include/trygvis/kicad/netlist.h b/core/include/trygvis/kicad/netlist.h new file mode 100644 index 0000000..9cac5a3 --- /dev/null +++ b/core/include/trygvis/kicad/netlist.h @@ -0,0 +1,98 @@ +#pragma once + +#include "trygvis/kicad.h" + +#include +#include +#include +#include + +namespace trygvis { +namespace kicad { +namespace netlist { + +struct lib_source { + const std::string lib; + const std::string part; + + lib_source(const std::string &lib, const std::string &part) : lib(lib), part(part) {} +}; + +struct component { + const std::string ref; + const std::string value; + const lib_source _lib_source; + + component(const std::string &ref, const std::string &value, const lib_source &_lib_source) : + ref(ref), value(value), _lib_source(_lib_source) {} +}; + +struct pin { + int num; + std::string name; + std::string type; +}; + +struct part { + std::vector pins; +}; + +class node { +public: + const std::string ref; + const int pin; + + node(const std::string &ref, int pin) : ref(ref), pin(pin) {} +}; + +class net { +public: + const int code; + const opt name; + const std::vector nodes; + + net(int code, const opt &name, const std::vector &nodes) : code(code), name(name), nodes(nodes) {} + + const node *node_for_ref(const std::string &ref) const; +}; + +struct netlist { + std::vector components; + std::vector parts; + std::vector nets; + + opt find_component(const std::string &ref) const; + + std::vector find_nets_using_ref(const std::string &ref) const; +}; + +class kicad_parse_exception : public std::runtime_error { +public: + explicit kicad_parse_exception(const std::vector &messages) : + runtime_error("Parse error"), messages(messages) {} + + explicit kicad_parse_exception(const std::string &message) : + runtime_error("Parse error"), messages({message}) {} + + ~kicad_parse_exception() {} + + const std::vector messages; +}; + +class kicad_net_loader { +public: + kicad_net_loader(); + + virtual ~kicad_net_loader(); + + netlist load(std::string path, std::ostream &err); + + void setDebug(bool debug); + +private: + bool debug_; +}; + +} // namespace netlist +} // namespace kicad +} // namespace trygvis -- cgit v1.2.3