use crate::context::{IContext, ITemplateContext};
use crate::model::IModel;
use crate::util::{TemplateWriter, Utf16String};
use crate::{IThrottledTemplateProcessor, TemplateMode, TemplateSpec};
use super::TemplateData;
pub trait ITemplateManager {
fn clear_caches(&self);
fn clear_caches_for(&self, template: &Utf16String);
fn parse_standalone(
&self,
context: &dyn ITemplateContext,
template: &Utf16String,
template_selectors: Option<&[Utf16String]>,
template_mode: Option<TemplateMode>,
use_cache: bool,
fail_if_not_exists: bool,
) -> Result<Option<Box<dyn IModel>>, crate::exceptions::TemplateInputException>;
fn parse_string(
&self,
owner_template_data: &TemplateData,
template: &Utf16String,
line_offset: i32,
col_offset: i32,
template_mode: Option<TemplateMode>,
use_cache: bool,
) -> Result<Box<dyn IModel>, crate::exceptions::TemplateInputException>;
fn process(
&self,
template: &dyn IModel,
context: &dyn ITemplateContext,
writer: Box<dyn TemplateWriter>,
) -> Result<(), crate::exceptions::TemplateProcessingException>;
fn parse_and_process(
&self,
template_spec: &TemplateSpec,
context: &dyn IContext,
writer: Box<dyn TemplateWriter>,
) -> Result<(), crate::exceptions::TemplateProcessingException>;
fn parse_and_process_throttled(
&self,
template_spec: &TemplateSpec,
context: &dyn IContext,
) -> Result<Box<dyn IThrottledTemplateProcessor>, crate::exceptions::TemplateProcessingException>;
}