zerodds_corba_rust/lib.rs
1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2026 ZeroDDS Contributors
3//! Crate `zerodds-corba-rust`. Safety classification: **STANDARD**.
4//!
5//! IDL → Rust Code-Generator fuer CORBA-Service-Konstrukte (Interface-
6//! Traits + Stubs + Skeletons, Valuetypes, in Phase-2: Components,
7//! Homes, POA-Bindings).
8//!
9//! Analog zu `zerodds-idl-cpp` / `-csharp` / `-java` aber emittiert Rust
10//! statt C++/C#/Java. Konsumiert die `zerodds-corba-codegen`-Helpers
11//! (Special-Types-Tabellen, Stub/Skeleton-Templates) und das
12//! `zerodds-idl-rust::type_map` fuer DataType-Mapping.
13//!
14//! ## Schichten-Position
15//!
16//! Layer 8 (CORBA-Stack). Build-Zeit-Tool, std-only,
17//! `forbid(unsafe_code)`.
18//!
19//! ## Spec-Quelle
20//!
21//! `docs/specs/zerodds-corba-rust-1.0.md` (ZeroDDS Vendor-Spec).
22//! Konformitaetstraeger: OMG CORBA 3.3 Annex-A, OMG IDL4.
23//!
24//! ## Was wird emittiert
25//!
26//! | IDL | Rust |
27//! |-------------------------------|---------------------------------------------------|
28//! | `interface I { op(...); };` | `pub trait I` + `pub struct IStub` + `dispatch_i` |
29//! | `attribute T x` | trait getter `fn x(&self)` + setter wenn writable |
30//! | `oneway op(...)` | trait method ohne Reply |
31//! | `valuetype V { ... };` | `pub trait V: ValueBase` |
32//! | `component C` / `home H` | (Phase-2) |
33//!
34//! ## Public API
35//!
36//! - [`generate_corba_rust_module`] — AST + Optionen → Rust-Modul-Code.
37//! - [`CorbaRustGenOptions`] — Codegen-Optionen.
38//! - [`error::CorbaRustError`] — Fehler-Familie.
39//!
40//! Plus die Runtime-Public-API die der generierte Code referenziert:
41//! - [`ObjectReference`] — IOR-Wrapper.
42//! - [`CorbaException`] — System-/User-Exception-Variants.
43//! - [`SkeletonResult`] — Server-Dispatch-Result.
44//! - [`ValueBase`] — Trait fuer alle Valuetype-Implementierungen.
45//! - [`Servant`] — POA-Servant-Marker.
46
47#![forbid(unsafe_code)]
48#![warn(missing_docs)]
49
50pub mod component_emit;
51pub mod emitter;
52pub mod error;
53pub mod interface_emit;
54pub mod runtime;
55pub mod valuetype_emit;
56
57pub use emitter::{CorbaRustGenOptions, generate_corba_rust_module};
58pub use error::{CorbaRustError, Result};
59pub use runtime::{
60 ComponentHome, ComponentServant, CorbaConnection, CorbaException, IdAssignmentPolicy,
61 IdUniquenessPolicy, ImplicitActivationPolicy, LifespanPolicy, ObjectReference, PoaBuilder,
62 RequestProcessingPolicy, Servant, ServantRetentionPolicy, SkeletonResult, ThreadPolicy,
63 TypeCode, ValueBase, ValueStreamReader, ValueStreamWriter, ValueTagHeader,
64};