use std::path::{Path, PathBuf};
use super::read::{ByteCeilings, ReadFault};
pub(crate) trait SourceLanguage: ByteCeilings {
type Inventory;
type Fault;
fn max_source_files(&self) -> u32;
fn source_files_fault(&self) -> Self::Fault;
fn refused_again(&self, path: &str) -> Self::Fault;
fn confine(&self, root: &Path, relative: &str) -> Result<PathBuf, Self::Fault>;
fn refusal(&self, fault: ReadFault) -> Self::Fault;
fn decode(&self, bytes: Vec<u8>) -> Result<String, Self::Fault>;
fn inventory(&self, path: &str, text: &str) -> Result<Self::Inventory, Self::Fault>;
}