pub mod dodecet;
pub mod array;
pub mod string;
pub mod geometric;
pub mod hex;
pub mod calculus;
pub mod eisenstein;
pub mod lighthouse;
pub mod seed_discovery;
pub mod simd;
pub mod temporal;
#[cfg(feature = "wasm")]
pub mod wasm;
pub use dodecet::Dodecet;
pub use array::DodecetArray;
pub use string::DodecetString;
pub use geometric::{Point3D, Vector3D, Transform3D};
#[cfg(feature = "wasm")]
pub use wasm::{WasmDodecet, WasmPoint3D, WasmVector3D, DodecetUtils};
pub const MAX_DODECET: u16 = 0xFFF;
pub const DODECET_BITS: u8 = 12;
pub const NIBBLES: u8 = 3;
pub const CAPACITY: u16 = 4096;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DodecetError {
Overflow,
InvalidHex,
InvalidNibble,
InvalidGeometry,
InvalidLength,
}
impl std::fmt::Display for DodecetError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
DodecetError::Overflow => write!(f, "Value exceeds 12-bit capacity (max: 4095)"),
DodecetError::InvalidHex => write!(f, "Invalid hex string"),
DodecetError::InvalidNibble => write!(f, "Nibble index must be 0, 1, or 2"),
DodecetError::InvalidGeometry => write!(f, "Invalid geometric operation"),
DodecetError::InvalidLength => write!(f, "Invalid array length for SIMD operation"),
}
}
}
impl std::error::Error for DodecetError {}
pub type Result<T> = std::result::Result<T, DodecetError>;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_constants() {
assert_eq!(MAX_DODECET, 4095);
assert_eq!(DODECET_BITS, 12);
assert_eq!(NIBBLES, 3);
assert_eq!(CAPACITY, 4096);
}
}