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