use std::sync::Arc;
use crate::authoring::*;
pub mod minimal;
#[cfg(feature = "with_plain")]
pub mod plain;
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Copy, Clone)]
pub struct OpHandle(uuid::Uuid);
impl OpHandle {
pub fn new() -> Self {
OpHandle(uuid::Uuid::new_v4())
}
}
impl Default for OpHandle {
fn default() -> Self {
OpHandle(uuid::Uuid::new_v4())
}
}
pub trait Context {
fn new() -> Self
where
Self: Sized;
fn op(&mut self, definition: &str) -> Result<OpHandle, Error>;
fn apply(
&self,
op: OpHandle,
direction: Direction,
operands: &mut dyn CoordinateSet,
) -> Result<usize, Error>;
fn globals(&self) -> BTreeMap<String, String>;
fn steps(&self, op: OpHandle) -> Result<Vec<String>, Error>;
fn params(&self, op: OpHandle, index: usize) -> Result<ParsedParameters, Error>;
fn register_op(&mut self, name: &str, constructor: OpConstructor);
fn register_resource(&mut self, name: &str, definition: &str);
fn get_op(&self, name: &str) -> Result<OpConstructor, Error>;
fn get_resource(&self, name: &str) -> Result<String, Error>;
fn get_blob(&self, name: &str) -> Result<Vec<u8>, Error>;
fn get_grid(&self, name: &str) -> Result<Arc<BaseGrid>, Error>;
fn get_paths(&self) -> Vec<std::path::PathBuf> {
Vec::new()
}
#[expect(unused_variables)]
fn get_grid_values(
&self,
grid: &BaseGrid,
index: &[usize],
grid_values: &mut [Coor4D],
) -> usize {
0
}
}
#[rustfmt::skip]
pub const BUILTIN_ADAPTORS: [(&str, &str); 8] = [
("geo:in", "adapt from=neuf_deg"),
("geo:out", "adapt to=neuf_deg" ),
("gis:in", "adapt from=enuf_deg"),
("gis:out", "adapt to=enuf_deg" ),
("neu:in", "adapt from=neuf" ),
("neu:out", "adapt to=neuf" ),
("enu:in", "adapt from=enuf" ),
("enu:out", "adapt to=enuf" ),
];