pub struct EmitContext {
pub indent: usize,
pub indent_step: usize,
pub format_number_hex: bool,
pub verbosity: EmitVerbosity,
pub indent_style: IndentStyle,
pub expr_root: bool,
pub include_ssa_versions: bool,
}
Expand description
Contains the emitting context for the AST.
Fields§
§indent: usize
The current indentation level.
indent_step: usize
The number of spaces to indent by.
format_number_hex: bool
Whether to format numbers in hexadecimal.
verbosity: EmitVerbosity
The mode in which to emit the AST.
indent_style: IndentStyle
The style of indentation to use.
expr_root: bool
The root of the expression tree.
include_ssa_versions: bool
If we should include SSA versions in the emitted code.
Implementations§
Source§impl EmitContext
impl EmitContext
Sourcepub fn scoped<F>(&mut self, action: F) -> Selfwhere
F: FnOnce(&mut Self) -> EmitContext,
pub fn scoped<F>(&mut self, action: F) -> Selfwhere
F: FnOnce(&mut Self) -> EmitContext,
Allow temporarily changing the EmitContext for a block of code.
§Arguments
f
- The function to call with the new EmitContext.
§Returns
The EmitContext after the function has been called.
§Example
use gbf_core::decompiler::ast::visitors::emit_context::EmitContext;
let mut context = EmitContext::default();
let body_context = context.scoped(|ctx| ctx.with_indent());
Sourcepub fn with_indent(&self) -> EmitContext
pub fn with_indent(&self) -> EmitContext
Returns a new EmitContext with the indent increased by the indent step.
§Returns
A new EmitContext with the indent increased by the indent step.
§Example
use gbf_core::decompiler::ast::visitors::emit_context::EmitContext;
let mut context = EmitContext::default();
let body_context = context.with_indent();
Sourcepub fn with_expr_root(&self, expr_root: bool) -> EmitContext
pub fn with_expr_root(&self, expr_root: bool) -> EmitContext
Returns a new EmitContext with expr_root set to the given value.
§Arguments
expr_root
- The value to set expr_root to.
§Returns
A new EmitContext with expr_root set to the given value.
§Example
use gbf_core::decompiler::ast::visitors::emit_context::EmitContext;
let mut context = EmitContext::default();
let body_context = context.with_expr_root(true);
Sourcepub fn builder() -> EmitContextBuilder
pub fn builder() -> EmitContextBuilder
Trait Implementations§
Source§impl Clone for EmitContext
impl Clone for EmitContext
Source§fn clone(&self) -> EmitContext
fn clone(&self) -> EmitContext
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for EmitContext
impl Debug for EmitContext
Source§impl Default for EmitContext
impl Default for EmitContext
impl Copy for EmitContext
Auto Trait Implementations§
impl Freeze for EmitContext
impl RefUnwindSafe for EmitContext
impl Send for EmitContext
impl Sync for EmitContext
impl Unpin for EmitContext
impl UnwindSafe for EmitContext
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more