Horizon
kicad_package_parser.hpp
1 #pragma once
2 #include "common/common.hpp"
3 
4 namespace SEXPR {
5 class SEXPR;
6 }
7 
8 namespace horizon {
10 protected:
11  class Line *parse_line(const SEXPR::SEXPR *data);
12  void parse_poly(const SEXPR::SEXPR *data);
13  static int get_layer(const std::string &l);
14  static Coordi get_coord(const SEXPR::SEXPR *data, size_t offset = 1);
15  static Coordi get_size(const SEXPR::SEXPR *data, size_t offset = 1);
16  std::map<Coordi, class Junction *> junctions;
17  Junction *get_or_create_junction(const Coordi &c);
18 
19  virtual class Junction &create_junction() = 0;
20  virtual class Polygon &create_polygon() = 0;
21  virtual class Line &create_line() = 0;
22 
23 public:
24  virtual ~KiCadModuleParser()
25  {
26  }
27 };
28 
30 public:
31  KiCadPackageParser(class Package &p, class IPool &po);
32  void parse(const SEXPR::SEXPR *data);
33 
34 private:
35  void parse_pad(const SEXPR::SEXPR *data);
36 
37  class Junction &create_junction() override;
38  class Polygon &create_polygon() override;
39  class Line &create_line() override;
40 
41  Package &package;
42  IPool &pool;
43 };
44 
46 public:
47  KiCadDecalParser(class Decal &d);
48  void parse(const SEXPR::SEXPR *data);
49 
50 private:
51  class Junction &create_junction() override;
52  class Polygon &create_polygon() override;
53  class Line &create_line() override;
54 
55  Decal &decal;
56 };
57 
58 } // namespace horizon
Definition: sexpr.h:45
Definition: decal.hpp:16
Definition: ipool.hpp:12
A Junction is a point in 2D-Space.
Definition: junction.hpp:20
Definition: kicad_package_parser.hpp:45
Definition: kicad_package_parser.hpp:9
Definition: kicad_package_parser.hpp:29
Graphical line.
Definition: line.hpp:19
Definition: package.hpp:29
Polygon used in Padstack, Package and Board for specifying filled Regions.
Definition: polygon.hpp:27