diff options
| author | Laurenz <laurmaedje@gmail.com> | 2021-07-20 20:21:56 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2021-07-21 11:28:29 +0200 |
| commit | 9488b1b850152eb564dbfefc898c962bdac73eb4 (patch) | |
| tree | 0a99487cddfee1a46b5802dc6b64c81b70e549da /src/exec | |
| parent | 8000783f95ee007d9dda6f1dcc1c42c8e607b122 (diff) | |
Main context struct
Diffstat (limited to 'src/exec')
| -rw-r--r-- | src/exec/context.rs | 9 | ||||
| -rw-r--r-- | src/exec/mod.rs | 5 |
2 files changed, 8 insertions, 6 deletions
diff --git a/src/exec/context.rs b/src/exec/context.rs index 04c0169d..925fd7de 100644 --- a/src/exec/context.rs +++ b/src/exec/context.rs @@ -10,6 +10,7 @@ use crate::layout::{ LayoutNode, LayoutTree, PadNode, PageRun, ParChild, ParNode, StackChild, StackNode, }; use crate::syntax::{Span, SyntaxTree}; +use crate::Context; /// The context for execution. pub struct ExecContext { @@ -28,13 +29,13 @@ pub struct ExecContext { impl ExecContext { /// Create a new execution context with a base state. - pub fn new(state: State) -> Self { + pub fn new(ctx: &mut Context) -> Self { Self { + state: ctx.state.clone(), diags: DiagSet::new(), tree: LayoutTree { runs: vec![] }, - page: Some(PageBuilder::new(&state, true)), - stack: StackBuilder::new(&state), - state, + page: Some(PageBuilder::new(&ctx.state, true)), + stack: StackBuilder::new(&ctx.state), } } diff --git a/src/exec/mod.rs b/src/exec/mod.rs index 752bdba5..d61e0793 100644 --- a/src/exec/mod.rs +++ b/src/exec/mod.rs @@ -16,10 +16,11 @@ use crate::geom::{Dir, Gen}; use crate::layout::{LayoutTree, StackChild, StackNode}; use crate::pretty::pretty; use crate::syntax::*; +use crate::Context; /// Execute a template to produce a layout tree. -pub fn exec(template: &Template, state: State) -> Pass<LayoutTree> { - let mut ctx = ExecContext::new(state); +pub fn exec(ctx: &mut Context, template: &Template) -> Pass<LayoutTree> { + let mut ctx = ExecContext::new(ctx); template.exec(&mut ctx); ctx.finish() } |
