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;