Skip to content

Commit 7d67338

Browse files
authored
Expose ModuleProducers fields (#314)
1 parent bf67d55 commit 7d67338

1 file changed

Lines changed: 37 additions & 8 deletions

File tree

src/module/producers.rs

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,17 @@ use crate::module::Module;
1010
/// Representation of the wasm custom section `producers`
1111
#[derive(Debug, Default)]
1212
pub struct ModuleProducers {
13-
fields: Vec<Field>,
13+
fields: Vec<ProducerField>,
1414
}
1515

1616
#[derive(Debug)]
17-
struct Field {
17+
pub struct ProducerField {
1818
name: String,
19-
values: Vec<Value>,
19+
values: Vec<ProducerValue>,
2020
}
2121

2222
#[derive(Debug)]
23-
struct Value {
23+
pub struct ProducerValue {
2424
name: String,
2525
version: String,
2626
}
@@ -41,8 +41,13 @@ impl ModuleProducers {
4141
self.field("sdk", sdk, version);
4242
}
4343

44+
/// Returns the [`ProducerField`]s of this producers section
45+
pub fn fields(&self) -> &[ProducerField] {
46+
&self.fields
47+
}
48+
4449
fn field(&mut self, field_name: &str, name: &str, version: &str) {
45-
let new_value = Value {
50+
let new_value = ProducerValue {
4651
name: name.to_string(),
4752
version: version.to_string(),
4853
};
@@ -60,7 +65,7 @@ impl ModuleProducers {
6065
field.values.push(new_value);
6166
return;
6267
}
63-
self.fields.push(Field {
68+
self.fields.push(ProducerField {
6469
name: field_name.to_string(),
6570
values: vec![new_value],
6671
})
@@ -72,6 +77,30 @@ impl ModuleProducers {
7277
}
7378
}
7479

80+
impl ProducerField {
81+
/// Returns the name of this [`ProducerField`]
82+
pub fn name(&self) -> &str {
83+
&self.name
84+
}
85+
86+
/// Returns the [`ProducerValue`]s of this [`ProducerField`]
87+
pub fn values(&self) -> &[ProducerValue] {
88+
&self.values
89+
}
90+
}
91+
92+
impl ProducerValue {
93+
/// Returns the name of this [`ProducerValue`]
94+
pub fn name(&self) -> &str {
95+
&self.name
96+
}
97+
98+
/// Returns the version of this [`ProducerValue`]
99+
pub fn version(&self) -> &str {
100+
&self.version
101+
}
102+
}
103+
75104
impl Module {
76105
/// Parse a producers section from the custom section payload specified.
77106
pub(crate) fn parse_producers_section(
@@ -85,13 +114,13 @@ impl Module {
85114
let mut values = Vec::new();
86115
for value in field.values {
87116
let value = value?;
88-
values.push(Value {
117+
values.push(ProducerValue {
89118
name: value.name.to_string(),
90119
version: value.version.to_string(),
91120
});
92121
}
93122
let name = field.name.to_string();
94-
self.producers.fields.push(Field { name, values });
123+
self.producers.fields.push(ProducerField { name, values });
95124
}
96125

97126
Ok(())

0 commit comments

Comments
 (0)