Skip to main content

zerodds_types/dynamic/
mod.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2026 ZeroDDS Contributors
3//! XTypes 1.3 §7.5 DynamicType-API.
4//!
5//! Foundation für die XTypes-1.3-Type-System-Vervollständigung. Ziel
6//! ist eine programmatische, Spec-treue Runtime-Sicht auf XTypes-
7//! Datenmodelle (Struct/Union/Enum/Sequence/...), die unabhaengig vom
8//! Wire-Format `TypeObject` lebt — und ueber das `bridge`-Submodul auf
9//! das Wire-Format gemappt werden kann (Spec §7.6).
10//!
11//! # Module
12//!
13//! - `descriptor` — `TypeDescriptor`, `MemberDescriptor`, `TypeKind`,
14//!   `ExtensibilityKind`, `TryConstructKind`.
15//! - `type_` — `DynamicType`, `DynamicTypeMember`.
16//! - `builder` — `DynamicTypeBuilder`, `DynamicTypeBuilderFactory`.
17//! - `data` — `DynamicData` + 12 typed accessors + Sequence/Composite
18//!   + Loan-Stub.
19//! - `factory` — `DynamicDataFactory`.
20//! - `bridge` — TypeObject ↔ DynamicType.
21//! - `error` — `DynamicError`.
22//!
23//! # Implementations-Scope
24//!
25//! - Try-Construct-**Apply**-Logik (DISCARD/USE_DEFAULT/TRIM bei
26//!   Decoder-Fehlschlag) — kommt mit C4.7. Hier ist nur das Enum +
27//!   Member-Feld.
28//! - Voller Loan-Refcount mit Lifetime-Tracking — aktuelle
29//!   Implementation ist ein RAII-Wrapper mit Active-Set.
30//! - Annotations-Apply (Spec §7.4 builtin annotations) — kommt mit
31//!   C4.3.
32//! - Bitset/Bitmask im Bridge-Pfad — TypeObject-Bridge fuer diese
33//!   Kinds folgt mit C4.5 XML-Schema-Loader.
34
35pub mod bridge;
36pub mod builder;
37pub mod builtin_types;
38pub mod data;
39pub mod descriptor;
40pub mod error;
41pub mod factory;
42pub mod try_construct;
43pub mod type_;
44
45pub use builder::{DynamicTypeBuilder, DynamicTypeBuilderFactory};
46pub use builtin_types::{
47    NAME_DDS_BYTES, NAME_DDS_KEYED_BYTES, NAME_DDS_KEYED_STRING, NAME_DDS_STRING,
48    all_builtin_types, dds_bytes, dds_keyed_bytes, dds_keyed_string, dds_string,
49    is_builtin_type_name,
50};
51pub use data::{DataLoan, DynamicData, DynamicValue};
52pub use descriptor::{
53    ExtensibilityKind, MemberDescriptor, MemberId, TryConstructKind, TypeDescriptor, TypeKind,
54};
55pub use error::DynamicError;
56pub use factory::DynamicDataFactory;
57pub use try_construct::{TryConstructOutcome, apply_try_construct};
58pub use type_::{DynamicType, DynamicTypeMember};