use std::collections::HashMap;
use marlu::{c64, Jones};
use parking_lot::RwLock;
use crate::types::CacheKey;
pub(super) struct DipoleCoefficients {
pub(super) q1_accum: Vec<c64>,
pub(super) q2_accum: Vec<c64>,
pub(super) m_accum: Vec<i8>,
pub(super) n_accum: Vec<i8>,
pub(super) m_signs: Vec<i8>,
pub(super) n_max: usize,
}
pub(super) struct BowtieCoefficients {
pub(super) x: DipoleCoefficients,
pub(super) y: DipoleCoefficients,
}
#[derive(Default)]
pub(super) struct CoeffCache(RwLock<HashMap<CacheKey, BowtieCoefficients>>);
impl std::ops::Deref for CoeffCache {
type Target = RwLock<HashMap<CacheKey, BowtieCoefficients>>;
fn deref(&self) -> &Self::Target {
&self.0
}
}
#[derive(Default)]
pub(super) struct NormCache(RwLock<HashMap<u32, Jones<f64>>>);
impl std::ops::Deref for NormCache {
type Target = RwLock<HashMap<u32, Jones<f64>>>;
fn deref(&self) -> &Self::Target {
&self.0
}
}