7 #include "../OdbFile.h"
12 #include "../../enums.h"
13 #include "../../IProtoBuffable.h"
14 #include "../../ProtoBuf/matrixfile.pb.h"
15 #include "../IStreamSaveable.h"
19 #include "../../odbdesign_export.h"
22 namespace Odb::Lib::FileModel::Design
32 unsigned int id = (
unsigned int)-1;
35 typedef std::vector<std::shared_ptr<StepRecord>> Vector;
37 inline static const char* RECORD_TOKEN =
"STEP";
38 inline static const char* COLUMN_KEY =
"COL";
39 inline static const char* NAME_KEY =
"NAME";
40 inline static const char* ID_KEY =
"ID";
43 std::unique_ptr<Odb::Lib::Protobuf::MatrixFile::StepRecord> to_protobuf()
const override;
44 void from_protobuf(
const Odb::Lib::Protobuf::MatrixFile::StepRecord& message)
override;
72 enum class DielectricType
87 typedef std::vector<std::shared_ptr<LayerRecord>> Vector;
94 DielectricType dielectricType = DielectricType::NotSet;
95 std::string dielectricName;
96 Form form = Form::NotSet;
97 unsigned int cuTop = (
unsigned int)-1;
98 unsigned int cuBottom = (
unsigned int)-1;
99 unsigned int ref = (
unsigned int)-1;
100 std::string startName;
105 unsigned int id = (
unsigned int)-1;
107 inline static const char* RECORD_TOKEN =
"LAYER";
109 inline static const char* ROW_KEY =
"ROW";
110 inline static const char* CONTEXT_KEY =
"CONTEXT";
111 inline static const char* TYPE_KEY =
"TYPE";
112 inline static const char* NAME_KEY =
"NAME";
113 inline static const char* POLARITY_KEY =
"POLARITY";
114 inline static const char* DIELECTRIC_TYPE_KEY =
"DIELECTRIC_TYPE";
115 inline static const char* DIELECTRIC_NAME_KEY =
"DIELECTRIC_NAME";
116 inline static const char* FORM_KEY =
"FORM";
117 inline static const char* CU_TOP_KEY =
"CU_TOP";
118 inline static const char* CU_BOTTOM_KEY =
"CU_BOTTOM";
119 inline static const char* REF_KEY =
"REF";
120 inline static const char* START_NAME_KEY =
"START_NAME";
121 inline static const char* END_NAME_KEY =
"END_NAME";
122 inline static const char* OLD_NAME_KEY =
"OLD_NAME";
123 inline static const char* ADD_TYPE_KEY =
"ADD_TYPE";
124 inline static const char* COLOR_KEY =
"COLOR";
125 inline static const char* ID_KEY =
"ID";
128 std::unique_ptr<Odb::Lib::Protobuf::MatrixFile::LayerRecord> to_protobuf()
const override;
129 void from_protobuf(
const Odb::Lib::Protobuf::MatrixFile::LayerRecord& message)
override;
131 inline static const Utils::EnumMap<Type> typeMap {
149 inline static const Utils::EnumMap<Context> contextMap{
156 inline static const Utils::EnumMap<DielectricType> dielectricTypeMap{
165 inline static const Utils::EnumMap<Form> formMap{
173 inline static const Utils::EnumMap<Polarity> polarityMap{
181 const LayerRecord::Vector& GetLayerRecords()
const;
182 const StepRecord::Vector& GetStepRecords()
const;
185 bool Parse(std::filesystem::path path)
override;
187 bool Save(std::ostream& os)
override;
189 static inline bool attributeValueIsOptional(
const std::string& attribute);
192 std::unique_ptr<Odb::Lib::Protobuf::MatrixFile> to_protobuf()
const override;
193 void from_protobuf(
const Odb::Lib::Protobuf::MatrixFile& message)
override;
196 LayerRecord::Vector m_layerRecords;
197 StepRecord::Vector m_stepRecords;
199 constexpr
inline static const char* OPTIONAL_ATTRIBUTES[] =