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  };
28  enum class ID {
29  NAME,
30  NAME_VISIBLE,
31  PAD_VISIBLE,
32  LENGTH,
33  SIZE,
34  TEXT,
35  REFDES,
36  VALUE,
37  IS_POWER,
38  OFFSHEET_REFS,
39  WIDTH,
40  HEIGHT,
41  FORM,
42  LAYER,
43  DIAMETER,
44  PLATED,
45  FLIPPED,
46  NET_CLASS,
47  WIDTH_FROM_RULES,
48  MPN,
49  SHAPE,
50  PARAMETER_CLASS,
51  POSITION_X,
52  POSITION_Y,
53  ANGLE,
54  MIRROR,
55  PAD_TYPE,
56  FROM_RULES,
57  DISPLAY_DIRECTIONS,
58  USAGE,
59  MODE,
60  DIFFPAIR,
61  LOCKED,
62  DOT,
63  CLOCK,
64  SCHMITT,
65  DRIVER,
66  ALTERNATE_PACKAGE,
67  POWER_SYMBOL_STYLE,
68  PIN_NAME_DISPLAY,
69  PIN_NAME_ORIENTATION,
70  FONT,
71  KEEPOUT_CLASS,
72  DISPLAY_ALL_PADS,
73  GROUP,
74  TAG,
75  EXPAND,
76  OMIT_SILKSCREEN,
77  FIXED,
78  NOPOPULATE,
79  OMIT_OUTLINE,
80  ON_TOP,
81  OPACITY,
82  PRIORITY,
83  };
84  ObjectProperty(Type t, const std::string &l, int o = 0, const std::vector<std::pair<int, std::string>> &its = {})
85  : type(t), label(l), enum_items(its), order(o)
86  {
87  }
88 
89  Type type;
90  std::string label;
91  std::vector<std::pair<int, std::string>> enum_items;
92  int order = 0;
93 };
94 
96 public:
97  ObjectDescription(const std::string &n, const std::string &n_pl,
98  const std::map<ObjectProperty::ID, ObjectProperty> &props)
99  : name(n), name_pl(n_pl), properties(props)
100  {
101  }
102 
103  std::string name;
104  std::string name_pl;
105  const std::map<ObjectProperty::ID, ObjectProperty> properties;
106 
107  const std::string &get_name_for_n(size_t n) const;
108 };
109 
110 extern const std::map<ObjectType, ObjectDescription> object_descriptions;
111 } // namespace horizon
horizon::ObjectDescription
Definition: object_descr.hpp:95
horizon::ObjectProperty
Definition: object_descr.hpp:6
SHAPE
Class SHAPE.
Definition: shape.h:59