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