39 lines
1.0 KiB
Rust
39 lines
1.0 KiB
Rust
use crate::dsl::{FloatHandler, IntegerHandler};
|
|
use std::marker::PhantomData;
|
|
|
|
pub struct Handler_F64<S, StoreFn: Fn(&mut S, f64)> {
|
|
store: StoreFn,
|
|
__phantom: PhantomData<S>,
|
|
}
|
|
impl<S, StoreFn: Fn(&mut S, f64)> Handler_F64<S, StoreFn> {
|
|
pub fn create(f: StoreFn) -> Self {
|
|
return Self {
|
|
store: f,
|
|
__phantom: PhantomData::default(),
|
|
};
|
|
}
|
|
}
|
|
impl<S, StoreFn: Fn(&mut S, f64)> FloatHandler<S> for Handler_F64<S, StoreFn> {
|
|
fn handleFloat(&self, dst: &mut S, value: f64) {
|
|
(self.store)(dst, value);
|
|
}
|
|
}
|
|
|
|
pub struct Handler_F32<S, StoreFn: Fn(&mut S, f32)> {
|
|
store: StoreFn,
|
|
__phantom: PhantomData<S>,
|
|
}
|
|
impl<S, StoreFn: Fn(&mut S, f32)> Handler_F32<S, StoreFn> {
|
|
pub fn create(f: StoreFn) -> Self {
|
|
return Self {
|
|
store: f,
|
|
__phantom: PhantomData::default(),
|
|
};
|
|
}
|
|
}
|
|
impl<S, StoreFn: Fn(&mut S, f32)> FloatHandler<S> for Handler_F32<S, StoreFn> {
|
|
fn handleFloat(&self, dst: &mut S, value: f64) {
|
|
(self.store)(dst, value as f32);
|
|
}
|
|
}
|