Horizon
object_descr.hpp
1 #pragma once
2 #include "common.hpp"
3 #include <map>
4 
5 namespace horizon {
7 public:
8  enum class Type {
9  BOOL,
10  INT,
11  STRING,
12  STRING_RO,
13  STRING_MULTILINE,
14  LENGTH,
15  LAYER,
16  LAYER_COPPER,
17  NET_CLASS,
18  ENUM,
19  DIM,
20  ANGLE,
21  ANGLE90,
22  GROUP,
23  TAG,
24  EXPAND,
25  OPACITY,
26  PRIORITY,
27  SCALE,
28  };
29  enum class ID {
30  NAME,
31  NAME_VISIBLE,
32  PAD_VISIBLE,
33  LENGTH,
34  SIZE,
35  TEXT,
36  REFDES,
37  VALUE,
38  IS_POWER,
39  OFFSHEET_REFS,
40  WIDTH,
41  HEIGHT,
42  FORM,
43  LAYER,
44  DIAMETER,
45  PLATED,
46  FLIPPED,
47  NET_CLASS,
48  WIDTH_FROM_RULES,
49  MPN,
50  SHAPE,
51  PARAMETER_CLASS,
52  POSITION_X,
53  POSITION_Y,
54  ANGLE,
55  MIRROR,
56  PAD_TYPE,
57  FROM_RULES,
58  DISPLAY_DIRECTIONS,
59  USAGE,
60  MODE,
61  DIFFPAIR,
62  LOCKED,
63  DOT,
64  CLOCK,
65  SCHMITT,
66  DRIVER,
67  ALTERNATE_PACKAGE,
68  POWER_SYMBOL_STYLE,
69  PIN_NAME_DISPLAY,
70  PIN_NAME_ORIENTATION,
71  FONT,
72  KEEPOUT_CLASS,
73  DISPLAY_ALL_PADS,
74  GROUP,
75  TAG,
76  EXPAND,
77  OMIT_SILKSCREEN,
78  FIXED,
79  NOPOPULATE,
80  OMIT_OUTLINE,
81  ON_TOP,
82  OPACITY,
83  PRIORITY,
84  SCALE,
85  };
86  ObjectProperty(Type t, const std::string &l, int o = 0, const std::vector<std::pair<int, std::string>> &its = {})
87  : type(t), label(l), enum_items(its), order(o)
88  {
89  }
90 
91  Type type;
92  std::string label;
93  std::vector<std::pair<int, std::string>> enum_items;
94  int order = 0;
95 };
96 
98 public:
99  ObjectDescription(const std::string &n, const std::string &n_pl,
100  const std::map<ObjectProperty::ID, ObjectProperty> &props)
101  : name(n), name_pl(n_pl), properties(props)
102  {
103  }
104 
105  std::string name;
106  std::string name_pl;
107  const std::map<ObjectProperty::ID, ObjectProperty> properties;
108 
109  const std::string &get_name_for_n(size_t n) const;
110 };
111 
112 extern const std::map<ObjectType, ObjectDescription> object_descriptions;
113 } // namespace horizon
Class SHAPE.
Definition: shape.h:59
Definition: object_descr.hpp:97
Definition: object_descr.hpp:6