[][src]Module adapton::engine::reflect_dcg

Reflects the DCG engine, including both the effects of the programs running in it, and the internal effects of the engine cleaning and dirtying the DCG. For the latter effects, see the trace module.

Reflected Values. Notably, the values in the engine (including the values of mutable and compute nodes, and the values stored on edges between them) are reflected here into a special Val type. Primarily, the distinction between actual Rust values and this reflected Val type is what makes the DCG engine "reflected" by the definitions in this module, and not identical to them.

This module provides an interface used by Adapton Lab to produce HTML visualizations of these internal structures, for experimentation and debugging (namely, the dcg_reflect_begin and dcg_reflect_end functions). For the purposes of debugging, visualization and design/exploration, we exploit the reflected version of values to "walk" them, finding their articulations, and walking their values, recursively.

Re-exports

pub use crate::parse_val;

Functions

dcg_reflect_begin

Begin recording (reflections of) DCG effects. See dcg_reflect_end().

dcg_reflect_end

Stop recording (reflections of) DCG effects, and return them as a forrest (of DCG traces). See dcg_reflect_begin().

dcg_reflect_now

Reflect the DCG's internal structure now. Does not reflect any engine effects over this DCG (e.g., no cleaning or dirtying), just the program effects recorded by the DCG's structure. Returns None if the engine is Naive and thus has no reflected state whatsoever.

debug_begin

Begin a debugging extent in the trace, with associated name and message.

debug_effect

Insert an optional name and message in the reflect::trace

debug_end

End a debugging extent started with debug_begin.

string_of_loc

See doc for write_loc. Returns this output as a string.

string_of_name

See doc for write_name. Returns this output as a string.

string_of_path

See doc for write_path. Returns this output as a string.

write_loc

Write a concise human-readable version of the location (not the verbose, machine-parsable Debug version).

write_name

Write a concise human-readable version of the name (not the verbose, machine-parsable Debug version).

write_path

Write a concise human-readable version of the path (not the verbose, machine-parsable Debug version).