fmi_schema/fmi3/
build_description.rs1use super::Annotations;
35
36#[derive(Default, Debug, PartialEq, hard_xml::XmlRead, hard_xml::XmlWrite)]
38#[xml(
39 tag = "fmiBuildDescription",
40 strict(unknown_attribute, unknown_element)
41)]
42pub struct Fmi3BuildDescription {
43 #[xml(attr = "fmiVersion")]
46 pub fmi_version: String,
47
48 #[xml(child = "BuildConfiguration")]
50 pub build_configurations: Vec<BuildConfiguration>,
51
52 #[xml(child = "Annotations")]
54 pub annotations: Option<Annotations>,
55}
56
57#[derive(Default, Debug, PartialEq, hard_xml::XmlRead, hard_xml::XmlWrite)]
59#[xml(tag = "BuildConfiguration", strict(unknown_attribute, unknown_element))]
60pub struct BuildConfiguration {
61 #[xml(attr = "modelIdentifier")]
63 pub model_identifier: String,
64
65 #[xml(attr = "platform")]
67 pub platform: Option<String>,
68
69 #[xml(attr = "description")]
71 pub description: Option<String>,
72
73 #[xml(child = "SourceFileSet")]
75 pub source_file_sets: Vec<SourceFileSet>,
76
77 #[xml(child = "Library")]
79 pub libraries: Vec<Library>,
80
81 #[xml(child = "Annotations")]
83 pub annotations: Option<Annotations>,
84}
85
86#[derive(Default, Debug, PartialEq, hard_xml::XmlRead, hard_xml::XmlWrite)]
88#[xml(tag = "SourceFileSet", strict(unknown_attribute, unknown_element))]
89pub struct SourceFileSet {
90 #[xml(attr = "name")]
92 pub name: Option<String>,
93
94 #[xml(attr = "language")]
96 pub language: Option<String>,
97
98 #[xml(attr = "compiler")]
100 pub compiler: Option<String>,
101
102 #[xml(attr = "compilerOptions")]
104 pub compiler_options: Option<String>,
105
106 #[xml(child = "SourceFile")]
108 pub source_files: Vec<SourceFile>,
109
110 #[xml(child = "PreprocessorDefinition")]
112 pub preprocessor_definitions: Vec<PreprocessorDefinition>,
113
114 #[xml(child = "IncludeDirectory")]
116 pub include_directories: Vec<IncludeDirectory>,
117
118 #[xml(child = "Annotations")]
120 pub annotations: Option<Annotations>,
121}
122
123#[derive(Default, Debug, PartialEq, hard_xml::XmlRead, hard_xml::XmlWrite)]
125#[xml(tag = "SourceFile", strict(unknown_attribute, unknown_element))]
126pub struct SourceFile {
127 #[xml(attr = "name")]
129 pub name: String,
130
131 #[xml(child = "Annotations")]
133 pub annotations: Option<Annotations>,
134}
135
136#[derive(Default, Debug, PartialEq, hard_xml::XmlRead, hard_xml::XmlWrite)]
138#[xml(
139 tag = "PreprocessorDefinition",
140 strict(unknown_attribute, unknown_element)
141)]
142pub struct PreprocessorDefinition {
143 #[xml(attr = "name")]
145 pub name: String,
146
147 #[xml(attr = "optional")]
149 pub optional: Option<bool>,
150
151 #[xml(attr = "value")]
153 pub value: Option<String>,
154
155 #[xml(attr = "description")]
157 pub description: Option<String>,
158
159 #[xml(child = "Option")]
161 pub options: Vec<PreprocessorOption>,
162
163 #[xml(child = "Annotations")]
165 pub annotations: Option<Annotations>,
166}
167
168#[derive(Default, Debug, PartialEq, hard_xml::XmlRead, hard_xml::XmlWrite)]
170#[xml(tag = "Option", strict(unknown_attribute, unknown_element))]
171pub struct PreprocessorOption {
172 #[xml(attr = "value")]
174 pub value: Option<String>,
175
176 #[xml(attr = "description")]
178 pub description: Option<String>,
179}
180
181#[derive(Default, Debug, PartialEq, hard_xml::XmlRead, hard_xml::XmlWrite)]
183#[xml(tag = "IncludeDirectory", strict(unknown_attribute, unknown_element))]
184pub struct IncludeDirectory {
185 #[xml(attr = "name")]
187 pub name: String,
188
189 #[xml(child = "Annotations")]
191 pub annotations: Option<Annotations>,
192}
193
194#[derive(Default, Debug, PartialEq, hard_xml::XmlRead, hard_xml::XmlWrite)]
196#[xml(tag = "Library", strict(unknown_attribute, unknown_element))]
197pub struct Library {
198 #[xml(attr = "name")]
200 pub name: String,
201
202 #[xml(attr = "version")]
204 pub version: Option<String>,
205
206 #[xml(attr = "external")]
208 pub external: Option<bool>,
209
210 #[xml(attr = "description")]
212 pub description: Option<String>,
213
214 #[xml(child = "Annotations")]
216 pub annotations: Option<Annotations>,
217}