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;