diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/include/trygvis/kicad.h | 94 | ||||
-rw-r--r-- | core/kicad.cpp | 14 |
2 files changed, 4 insertions, 104 deletions
diff --git a/core/include/trygvis/kicad.h b/core/include/trygvis/kicad.h index bae250b..4b76868 100644 --- a/core/include/trygvis/kicad.h +++ b/core/include/trygvis/kicad.h @@ -1,10 +1,6 @@ #pragma once #include <experimental/optional> -#include <ostream> -#include <stdexcept> -#include <string> -#include <vector> namespace trygvis { namespace kicad { @@ -13,93 +9,3 @@ using opt = std::experimental::optional<T>; using std::experimental::nullopt; } // namespace kicad } // namespace trygvis - -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<pin> 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 std::string name; - const std::vector<node> nodes; - - net(int code, const std::string &name, const std::vector<node> &nodes) : code(code), name(name), nodes(nodes) {} - - const node *node_for_ref(const std::string &ref) const; -}; - -struct netlist { - std::vector<component> components; - std::vector<part> parts; - std::vector<net> nets; - - opt<const component *> find_component(const std::string &ref) const; - - std::vector<const net *> find_usage_of(const std::string &ref) const; -}; - -class kicad_parse_exception : public std::runtime_error { -public: - explicit kicad_parse_exception(const std::vector<std::string> &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<std::string> 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 diff --git a/core/kicad.cpp b/core/kicad.cpp index a553b62..c0315e6 100644 --- a/core/kicad.cpp +++ b/core/kicad.cpp @@ -1,4 +1,4 @@ -#include "trygvis/kicad.h" +#include "trygvis/kicad/netlist.h" #include "trygvis/antlr.h" #include "trygvis/string_utils.h" #include <KicadNetLexer.h> @@ -35,7 +35,7 @@ opt<const component *> netlist::find_component(const string &ref) const { return std::experimental::nullopt; } -vector<const net *> netlist::find_usage_of(const string &ref) const { +vector<const net *> netlist::find_nets_using_ref(const string &ref) const { vector<const net *> usage; for (auto &net : nets) { @@ -91,15 +91,9 @@ public: name = name.substr(1); } -// cerr << "exitNet: " << "code=" << code << ", name=" << name << ", nodes=" << nodes.size() << endl; + bool hasName = !startsWith(name, "Net-("); -// if (nodes.size() > 1) { -// cerr << "Net#" << code << ": " << name << endl; -// for (auto &node: nodes) { -// cerr << " Node: " << node.ref << "#" << node.pin << endl; -// } -// } - nets.emplace_back(code, name, nodes); + nets.emplace_back(code, hasName ? opt<string>(name) : nullopt, nodes); nodes.clear(); } |