Expand description
Code generation for geometric algebra types.
This module provides code generators that produce Rust code from algebra specifications. The generated code includes struct definitions, accessors, constructors, and basic operations.
§Example
use clifford_codegen::algebra::Algebra;
use clifford_codegen::codegen::TypeGenerator;
use clifford_codegen::spec::parse_spec;
let spec = parse_spec(r#"
[algebra]
name = "test"
complete = false
[signature]
positive = ["e1", "e2"]
[types.Vector]
grades = [1]
field_map = [
{ name = "x", blade = "e1" },
{ name = "y", blade = "e2" }
]
"#).unwrap();
let algebra = Algebra::euclidean(2);
let generator = TypeGenerator::new(&spec, &algebra);
let tokens = generator.generate_types_file();
let code = tokens.to_string();
assert!(code.contains("pub struct Vector"));Structs§
- Conversions
Generator - Generates Multivector conversion implementations.
- Product
Generator - Generates the products.rs file.
- Traits
Generator - Generates trait implementations for algebra types.
- Type
Generator - Generates Rust struct definitions for algebra types.
- Unary
Generator - Generates Rust code for unary operations.
Functions§
- format_
tokens - Formats a token stream using rustfmt.