Skip to main content

clifford_codegen/codegen/
mod.rs

1//! Code generation for geometric algebra types.
2//!
3//! This module provides code generators that produce Rust code from
4//! algebra specifications. The generated code includes struct definitions,
5//! accessors, constructors, and basic operations.
6//!
7//! # Example
8//!
9//! ```
10//! use clifford_codegen::algebra::Algebra;
11//! use clifford_codegen::codegen::TypeGenerator;
12//! use clifford_codegen::spec::parse_spec;
13//!
14//! let spec = parse_spec(r#"
15//! [algebra]
16//! name = "test"
17//! complete = false
18//!
19//! [signature]
20//! positive = ["e1", "e2"]
21//!
22//! [types.Vector]
23//! grades = [1]
24//! field_map = [
25//!   { name = "x", blade = "e1" },
26//!   { name = "y", blade = "e2" }
27//! ]
28//! "#).unwrap();
29//!
30//! let algebra = Algebra::euclidean(2);
31//! let generator = TypeGenerator::new(&spec, &algebra);
32//!
33//! let tokens = generator.generate_types_file();
34//! let code = tokens.to_string();
35//!
36//! assert!(code.contains("pub struct Vector"));
37//! ```
38
39mod conversions;
40mod format;
41mod products;
42mod traits;
43mod types;
44mod unary;
45
46pub use conversions::ConversionsGenerator;
47pub use format::format_tokens;
48pub use products::ProductGenerator;
49pub use traits::TraitsGenerator;
50pub use types::TypeGenerator;
51pub use unary::UnaryGenerator;