dbc_rs/dbc/builder/
mod.rs

1use crate::{MessageBuilder, NodesBuilder, ValueDescriptionsBuilder, VersionBuilder};
2use std::collections::BTreeMap;
3
4/// Builder for constructing `Dbc` instances programmatically.
5///
6/// This builder allows you to create DBC files without parsing from a string.
7/// It requires the `std` feature to be enabled.
8///
9/// # Examples
10///
11/// ```rust,no_run
12/// use dbc_rs::{DbcBuilder, NodesBuilder, MessageBuilder, SignalBuilder, VersionBuilder};
13///
14/// let nodes = NodesBuilder::new()
15///     .add_node("ECM")
16///     .add_node("TCM");
17///
18/// let signal = SignalBuilder::new()
19///     .name("RPM")
20///     .start_bit(0)
21///     .length(16);
22///
23/// let message = MessageBuilder::new()
24///     .id(256)
25///     .name("EngineData")
26///     .dlc(8)
27///     .sender("ECM")
28///     .add_signal(signal);
29///
30/// let dbc = DbcBuilder::new()
31///     .version(VersionBuilder::new().version("1.0"))
32///     .nodes(nodes)
33///     .add_message(message)
34///     .build()?;
35/// # Ok::<(), dbc_rs::Error>(())
36/// ```
37#[derive(Debug, Default)]
38pub struct DbcBuilder {
39    version: VersionBuilder,
40    nodes: NodesBuilder,
41    messages: Vec<MessageBuilder>,
42    value_descriptions: BTreeMap<(Option<u32>, String), ValueDescriptionsBuilder>,
43}
44
45// Include modules for additional functionality
46mod build;
47mod core;
48mod methods;