Skip to main content

rh_codegen/generators/
mod.rs

1//! Code generation modules for FHIR types
2//!
3//! This module contains specialized generators for different aspects of FHIR code generation:
4//! - `struct_generator`: Generate Rust structs from FHIR StructureDefinitions
5//! - `trait_generator`: Generate Rust traits for FHIR resources
6//! - `enum_generator`: Generate Rust enums from FHIR value sets
7//! - `primitive_generator`: Generate Rust primitives for FHIR primitive types
8//! - `field_generator`: Generate individual struct fields
9//! - `documentation_generator`: Generate documentation for generated types
10//! - `nested_struct_generator`: Generate nested structs within FHIR structures
11//! - `file_generator`: Handle file generation and organization
12//! - `file_io_manager`: Centralized file I/O operations and directory management
13//! - `import_manager`: Manage imports and dependencies
14//! - `type_utilities`: Utility functions for type classification and helpers
15
16pub mod accessor_trait_generator;
17pub mod binding_generator;
18pub mod cardinality_generator;
19pub mod crate_generator;
20pub mod documentation_generator;
21pub mod enum_generator;
22pub mod existence_trait_generator;
23pub mod field_generator;
24pub mod file_generator;
25pub mod file_io_manager;
26pub mod import_manager;
27pub mod invariant_generator;
28// #[cfg(test)]
29// pub mod import_manager_integration_test;
30pub mod metadata_generator;
31pub mod mutator_trait_generator;
32pub mod naming_manager;
33pub mod nested_struct_generator;
34pub mod primitive_generator;
35pub mod struct_generator;
36pub mod token_generator;
37pub mod trait_generator;
38pub mod trait_impl_generator;
39pub mod type_registry;
40pub mod type_utilities;
41pub mod utils;
42pub mod validation_trait_generator;
43
44// Re-export key functionality
45pub use crate_generator::{
46    generate_crate_structure, parse_package_metadata, CrateGenerationParams,
47};
48pub use documentation_generator::DocumentationGenerator;
49pub use enum_generator::EnumGenerator;
50pub use existence_trait_generator::ExistenceTraitGenerator;
51pub use field_generator::FieldGenerator;
52pub use file_generator::FileGenerator;
53pub use file_io_manager::FileIoManager;
54pub use import_manager::ImportManager;
55pub use invariant_generator::InvariantGenerator;
56pub use metadata_generator::{build_metadata_registry, generate_metadata_code};
57pub use mutator_trait_generator::MutatorTraitGenerator;
58pub use naming_manager::NamingManager;
59pub use nested_struct_generator::NestedStructGenerator;
60pub use primitive_generator::PrimitiveGenerator;
61pub use struct_generator::StructGenerator;
62pub use token_generator::TokenGenerator;
63pub use trait_generator::TraitGenerator;
64pub use trait_impl_generator::TraitImplGenerator;
65pub use type_registry::TypeRegistry;
66pub use type_utilities::TypeUtilities;
67pub use utils::GeneratorUtils;
68pub use validation_trait_generator::ValidationTraitGenerator;