1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
// SPDX-License-Identifier: Apache-2.0
// Copyright 2026 ZeroDDS Contributors
//! Crate `zerodds-cdr`. Safety classification: **SAFE**.
//!
//! XCDR1/XCDR2 encoder/decoder + KeyHash + PL_CDR1 Member-Codec für
//! `@mutable` strukturierte Daten — implementiert OMG XTypes 1.3 §7.4
//! Wire-Format vollstaendig.
//!
//! ## Spec
//!
//! - **OMG XTypes 1.3** §7.4 (Wire-Encoding) inkl. §7.4.1.2 (PL_CDR1),
//! §7.4.2 (Plain CDR2 / Delimited CDR2 / PL_CDR2), §7.4.4 (Composite
//! Types: String/Sequence/Array/Optional), §7.4.5 (Struct-Extensibility:
//! final/appendable/mutable).
//! - **OMG XTypes 1.3** §7.6.8 KeyHash (CDR_BE Key-Holder + MD5-Fallback).
//! - **DDSI-RTPS 2.5** §10 Wire-Encapsulation (RepresentationIdentifier).
//!
//! ## Schichten-Position
//!
//! Layer 1 — Primitives. Direkte Abhaengige: `zerodds-types`, `zerodds-qos`,
//! `zerodds-rtps`, `zerodds-discovery`, `zerodds-dcps`, `zerodds-idl-rust`,
//! `dds-corba-{ior,iiop,giop,csiv2,cosnaming,rust}`, `zerodds-ts-wasm`.
//!
//! ## Public API (Stand 1.0.0-rc.1)
//!
//! - [`BufferReader`] / [`BufferWriter`] — alignment-tracking byte-level
//! I/O Primitives.
//! - [`Endianness`] — Little/Big-Endian-Marker.
//! - [`CdrEncode`] / [`CdrDecode`] — Trait-Familie für serialisierbare
//! Typen; Implementationen für alle Spec-Primitives plus Composite-
//! Types (String, `Vec<T>`, `[T; N]`, `Option<T>`) im `composite`-Modul.
//! - [`EncodeError`] / [`DecodeError`] — typisierte Fehler mit Offset-
//! Information.
//! - [`fixed::Fixed`] — IDL-`fixed<P,S>` Decimal-Type mit BCD-Encoding.
//! - [`struct_enc`] — XCDR2-Extensibility-Encoder (`encode_final`,
//! `encode_appendable`, [`struct_enc::MutableStructEncoder`] +
//! `read_mutable_member`).
//! - [`xcdr1`] — XTypes-1.3-konformer PL_CDR1-Member-Codec
//! (`encode_pl_cdr1_member`, `read_pl_cdr1_member`,
//! `read_all_pl_cdr1_members`, `write_pl_cdr1_sentinel`).
//! - [`key_hash::compute_key_hash`] / [`PlainCdr2BeKeyHolder`] /
//! [`KEY_HASH_LEN`] — XTypes 1.3 §7.6.8 KeyHash mit MD5-Fallback.
//!
//! ## Beispiel
//!
//! ```rust
//! use zerodds_cdr::{BufferWriter, BufferReader, Endianness, CdrEncode, CdrDecode};
//!
//! let mut w = BufferWriter::new(Endianness::Little);
//! 42u32.encode(&mut w).unwrap();
//! let bytes = w.into_bytes();
//!
//! let mut r = BufferReader::new(&bytes, Endianness::Little);
//! assert_eq!(u32::decode(&mut r).unwrap(), 42);
//! ```
extern crate alloc;
extern crate std;
pub use Endianness;
pub use ;
pub use ;
pub use BufferReader;
pub use BufferWriter;
pub use ;