Skip to content

Commit 0edf87b

Browse files
committed
Comments update
1 parent e275b1a commit 0edf87b

File tree

10 files changed

+206
-201
lines changed

10 files changed

+206
-201
lines changed

crates/powerlink-rs-xdc/src/resolver/app_process.rs

Lines changed: 12 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
1-
// crates/powerlink-rs-xdc/src/resolver/app_process.rs
2-
31
//! Handles resolving the `ApplicationProcess` block from the model to public types.
2+
//!
3+
//! The Application Process section defines the device's parameters, templates, data types,
4+
//! and function blocks. It is the most complex part of the XDC schema due to its
5+
//! hierarchical nature.
46
57
use crate::error::XdcError;
68
use crate::model;
79
use crate::model::app_process::{AppDataTypeChoice, ParameterGroupItem};
8-
use crate::resolver::utils; // Import the utils module
10+
use crate::resolver::utils;
911
use crate::types;
1012
use alloc::string::String;
1113
use alloc::vec::Vec;
1214

13-
/// Helper to extract the name of a `ParameterDataType` enum.
15+
/// Helper to extract the string name of a `ParameterDataType`.
1416
fn get_data_type_name(data_type: &model::app_process::ParameterDataType) -> String {
1517
use model::app_process::ParameterDataType::*;
1618
match data_type {
@@ -33,12 +35,13 @@ fn get_data_type_name(data_type: &model::app_process::ParameterDataType) -> Stri
3335
LREAL => "LREAL".into(),
3436
STRING => "STRING".into(),
3537
WSTRING => "WSTRING".into(),
38+
// For references, we return the referenced ID.
3639
DataTypeIDRef(r) => r.unique_id_ref.clone(),
3740
VariableRef(_) => "variableRef".into(),
3841
}
3942
}
4043

41-
/// Maps the model's ParameterDataType to the public types::ParameterDataType.
44+
/// Maps the model's internal `ParameterDataType` enum to the public API's enum.
4245
fn resolve_parameter_data_type(
4346
model: &model::app_process::ParameterDataType,
4447
) -> types::ParameterDataType {
@@ -69,9 +72,9 @@ fn resolve_parameter_data_type(
6972
}
7073
}
7174

72-
// --- Main Resolver ---
73-
74-
/// Resolves the `model::ApplicationProcess` into the public `types::ApplicationProcess`.
75+
/// Resolves the entire `model::ApplicationProcess` into the public `types::ApplicationProcess`.
76+
///
77+
/// This function processes lists of data types, templates, parameters, groups, and functions.
7578
pub(super) fn resolve_application_process(
7679
model: &model::app_process::ApplicationProcess,
7780
) -> Result<types::ApplicationProcess, XdcError> {
@@ -112,7 +115,6 @@ pub(super) fn resolve_application_process(
112115
})
113116
}
114117

115-
/// Helper to resolve a `model::app_process::Value` to `types::Value`.
116118
fn resolve_value(model: &model::app_process::Value) -> types::Value {
117119
types::Value {
118120
value: model.value.clone(),
@@ -125,7 +127,6 @@ fn resolve_value(model: &model::app_process::Value) -> types::Value {
125127
}
126128
}
127129

128-
/// Helper to resolve `model::app_process::AllowedValues` to `types::AllowedValues`.
129130
fn resolve_allowed_values(model: &model::app_process::AllowedValues) -> types::AllowedValues {
130131
types::AllowedValues {
131132
template_id_ref: model.template_id_ref.clone(),
@@ -142,7 +143,6 @@ fn resolve_allowed_values(model: &model::app_process::AllowedValues) -> types::A
142143
}
143144
}
144145

145-
/// Helper to resolve a single `model::app_process::Parameter` into `types::Parameter`.
146146
fn resolve_parameter(model: &model::app_process::Parameter) -> Result<types::Parameter, XdcError> {
147147
Ok(types::Parameter {
148148
unique_id: model.unique_id.clone(),
@@ -153,7 +153,6 @@ fn resolve_parameter(model: &model::app_process::Parameter) -> Result<types::Par
153153
multiplier: model.multiplier.clone(),
154154
template_id_ref: model.template_id_ref.clone(),
155155
data_type: resolve_parameter_data_type(&model.data_type),
156-
// `labels` is Glabels (not Option) here (from model/app_process.rs)
157156
label: utils::extract_label(&model.labels.items),
158157
description: utils::extract_description(&model.labels.items),
159158
actual_value: model.actual_value.as_ref().map(resolve_value),
@@ -162,25 +161,22 @@ fn resolve_parameter(model: &model::app_process::Parameter) -> Result<types::Par
162161
})
163162
}
164163

165-
/// Helper to resolve the `<parameterList>`.
166164
fn resolve_parameter_list(
167165
list: &model::app_process::ParameterList,
168166
) -> Result<Vec<types::Parameter>, XdcError> {
169167
list.parameter.iter().map(resolve_parameter).collect()
170168
}
171169

172-
/// Helper to resolve the `<templateList>`.
173170
fn resolve_template_list(
174171
list: &model::app_process::TemplateList,
175172
) -> Result<Vec<types::Parameter>, XdcError> {
176-
// parameterTemplate is identical to parameter in structure
173+
// Parameter templates have the same structure as parameters.
177174
list.parameter_template
178175
.iter()
179176
.map(resolve_parameter)
180177
.collect()
181178
}
182179

183-
/// Helper to resolve the `<dataTypeList>`.
184180
fn resolve_data_type_list(
185181
list: &model::app_process::AppDataTypeList,
186182
) -> Result<Vec<types::AppDataType>, XdcError> {
@@ -195,7 +191,6 @@ fn resolve_data_type_list(
195191
.collect()
196192
}
197193

198-
/// Helper to resolve a `<struct>`.
199194
fn resolve_struct(model: &model::app_process::AppStruct) -> Result<types::AppStruct, XdcError> {
200195
let members = model
201196
.var_declaration
@@ -206,7 +201,6 @@ fn resolve_struct(model: &model::app_process::AppStruct) -> Result<types::AppStr
206201
unique_id: var.unique_id.clone(),
207202
data_type: get_data_type_name(&var.data_type),
208203
size: var.size.as_ref().and_then(|s| s.parse::<u32>().ok()),
209-
// `labels` is Glabels
210204
label: utils::extract_label(&var.labels.items),
211205
description: utils::extract_description(&var.labels.items),
212206
})
@@ -216,14 +210,12 @@ fn resolve_struct(model: &model::app_process::AppStruct) -> Result<types::AppStr
216210
Ok(types::AppStruct {
217211
name: model.name.clone(),
218212
unique_id: model.unique_id.clone(),
219-
// `labels` is Glabels
220213
label: utils::extract_label(&model.labels.items),
221214
description: utils::extract_description(&model.labels.items),
222215
members,
223216
})
224217
}
225218

226-
/// Helper to resolve an `<array>`.
227219
fn resolve_array(model: &model::app_process::AppArray) -> Result<types::AppArray, XdcError> {
228220
let subrange = model.subrange.first().ok_or(XdcError::MissingElement {
229221
element: "subrange",
@@ -232,7 +224,6 @@ fn resolve_array(model: &model::app_process::AppArray) -> Result<types::AppArray
232224
Ok(types::AppArray {
233225
name: model.name.clone(),
234226
unique_id: model.unique_id.clone(),
235-
// `labels` is Glabels
236227
label: utils::extract_label(&model.labels.items),
237228
description: utils::extract_description(&model.labels.items),
238229
lower_limit: subrange.lower_limit.parse().unwrap_or(0),
@@ -241,13 +232,11 @@ fn resolve_array(model: &model::app_process::AppArray) -> Result<types::AppArray
241232
})
242233
}
243234

244-
/// Helper to resolve an `<enum>`.
245235
fn resolve_enum(model: &model::app_process::AppEnum) -> Result<types::AppEnum, XdcError> {
246236
let values = model
247237
.enum_value
248238
.iter()
249239
.map(|val| types::EnumValue {
250-
// `labels` is Glabels
251240
name: utils::extract_label(&val.labels.items).unwrap_or_default(),
252241
value: val.value.clone().unwrap_or_default(),
253242
label: utils::extract_label(&val.labels.items),
@@ -258,7 +247,6 @@ fn resolve_enum(model: &model::app_process::AppEnum) -> Result<types::AppEnum, X
258247
Ok(types::AppEnum {
259248
name: model.name.clone(),
260249
unique_id: model.unique_id.clone(),
261-
// `labels` is Glabels
262250
label: utils::extract_label(&model.labels.items),
263251
description: utils::extract_description(&model.labels.items),
264252
data_type: model
@@ -271,7 +259,6 @@ fn resolve_enum(model: &model::app_process::AppEnum) -> Result<types::AppEnum, X
271259
})
272260
}
273261

274-
/// Helper to resolve a `<derived>` type.
275262
fn resolve_derived(model: &model::app_process::AppDerived) -> Result<types::AppDerived, XdcError> {
276263
let count = model.count.as_ref().map(|c| types::Count {
277264
unique_id: c.unique_id.clone(),
@@ -282,15 +269,13 @@ fn resolve_derived(model: &model::app_process::AppDerived) -> Result<types::AppD
282269
Ok(types::AppDerived {
283270
name: model.name.clone(),
284271
unique_id: model.unique_id.clone(),
285-
// `labels` is Glabels
286272
label: utils::extract_label(&model.labels.items),
287273
description: utils::extract_description(&model.labels.items),
288274
data_type: get_data_type_name(&model.data_type),
289275
count,
290276
})
291277
}
292278

293-
/// Helper to resolve the `<parameterGroupList>`.
294279
fn resolve_parameter_group_list(
295280
list: &model::app_process::ParameterGroupList,
296281
) -> Result<Vec<types::ParameterGroup>, XdcError> {
@@ -300,7 +285,6 @@ fn resolve_parameter_group_list(
300285
.collect()
301286
}
302287

303-
/// Helper to recursively resolve a `<parameterGroup>`.
304288
fn resolve_parameter_group(
305289
model: &model::app_process::ParameterGroup,
306290
) -> Result<types::ParameterGroup, XdcError> {
@@ -324,14 +308,12 @@ fn resolve_parameter_group(
324308

325309
Ok(types::ParameterGroup {
326310
unique_id: model.unique_id.clone(),
327-
// `labels` is Glabels
328311
label: utils::extract_label(&model.labels.items),
329312
description: utils::extract_description(&model.labels.items),
330313
items,
331314
})
332315
}
333316

334-
/// Helper to resolve `<functionTypeList>`.
335317
fn resolve_function_type_list(
336318
list: &model::app_process::FunctionTypeList,
337319
) -> Result<Vec<types::FunctionType>, XdcError> {
@@ -341,7 +323,6 @@ fn resolve_function_type_list(
341323
.collect()
342324
}
343325

344-
/// Helper to resolve a single `<functionType>`.
345326
fn resolve_function_type(
346327
model: &model::app_process::FunctionType,
347328
) -> Result<types::FunctionType, XdcError> {
@@ -353,7 +334,6 @@ fn resolve_function_type(
353334
version: v.version.clone(),
354335
author: v.author.clone(),
355336
date: v.date.clone(),
356-
// `labels` is Glabels
357337
label: utils::extract_label(&v.labels.items),
358338
description: utils::extract_description(&v.labels.items),
359339
})
@@ -365,15 +345,13 @@ fn resolve_function_type(
365345
name: model.name.clone(),
366346
unique_id: model.unique_id.clone(),
367347
package: model.package.clone(),
368-
// `labels` is Glabels
369348
label: utils::extract_label(&model.labels.items),
370349
description: utils::extract_description(&model.labels.items),
371350
version_info,
372351
interface,
373352
})
374353
}
375354

376-
/// Helper to resolve an `<interfaceList>`.
377355
fn resolve_interface_list(
378356
model: &model::app_process::InterfaceList,
379357
) -> Result<types::InterfaceList, XdcError> {
@@ -405,7 +383,6 @@ fn resolve_interface_list(
405383
})
406384
}
407385

408-
/// Helper to resolve a `<varDeclaration>`.
409386
fn resolve_var_declaration(
410387
model: &model::app_process::VarDeclaration,
411388
) -> Result<types::VarDeclaration, XdcError> {
@@ -415,13 +392,11 @@ fn resolve_var_declaration(
415392
data_type: get_data_type_name(&model.data_type),
416393
size: model.size.as_ref().and_then(|s| s.parse::<u32>().ok()),
417394
initial_value: model.initial_value.clone(),
418-
// `labels` is Glabels
419395
label: utils::extract_label(&model.labels.items),
420396
description: utils::extract_description(&model.labels.items),
421397
})
422398
}
423399

424-
/// Helper to resolve `<functionInstanceList>`.
425400
fn resolve_function_instance_list(
426401
list: &model::app_process::FunctionInstanceList,
427402
) -> Result<Vec<types::FunctionInstance>, XdcError> {
@@ -432,7 +407,6 @@ fn resolve_function_instance_list(
432407
name: inst.name.clone(),
433408
unique_id: inst.unique_id.clone(),
434409
type_id_ref: inst.type_id_ref.clone(),
435-
// `labels` is Glabels
436410
label: utils::extract_label(&inst.labels.items),
437411
description: utils::extract_description(&inst.labels.items),
438412
})

0 commit comments

Comments
 (0)