From c44ecbfbd2706bf8e09728f2c85135aa2299d542 Mon Sep 17 00:00:00 2001 From: Martin Date: Wed, 18 Aug 2021 18:12:26 +0200 Subject: Move to exclusively oneshot benchmarks with Iai fork (#41) --- src/lib.rs | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index b6484012..207567f8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -49,7 +49,8 @@ pub mod util; use std::rc::Rc; use crate::diag::TypResult; -use crate::eval::{Scope, State}; +use crate::eval::{Scope, State, Module}; +use crate::syntax::SyntaxTree; use crate::font::FontStore; use crate::image::ImageStore; #[cfg(feature = "layout-cache")] @@ -88,11 +89,30 @@ impl Context { ContextBuilder::default() } + /// A read-only reference to the standard library scope. + pub fn std(&self) -> &Scope { + &self.std + } + + /// A read-only reference to the state. + pub fn state(&self) -> &State { + &self.state + } + + /// Parse a source file and return the resulting syntax tree. + pub fn parse(&mut self, id: SourceId) -> TypResult { + parse::parse(self.sources.get(id)) + } + + /// Evaluate a source file and return the resulting module. + pub fn evaluate(&mut self, id: SourceId) -> TypResult { + let ast = self.parse(id)?; + eval::eval(self, id, &ast) + } + /// Execute a source file and produce the resulting layout tree. pub fn execute(&mut self, id: SourceId) -> TypResult { - let source = self.sources.get(id); - let ast = parse::parse(source)?; - let module = eval::eval(self, id, &ast)?; + let module = self.evaluate(id)?; Ok(module.template.to_tree(&self.state)) } -- cgit v1.2.3