Skip to main content

Module codegen

Module codegen 

Source
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§

ConversionsGenerator
Generates Multivector conversion implementations.
ProductGenerator
Generates the products.rs file.
TraitsGenerator
Generates trait implementations for algebra types.
TypeGenerator
Generates Rust struct definitions for algebra types.
UnaryGenerator
Generates Rust code for unary operations.

Functions§

format_tokens
Formats a token stream using rustfmt.