Trait ExecContext

Source
pub trait ExecContext<'a, Q: QueryContext> {
    // Required methods
    fn pattern_definitions(&self) -> &[PatternDefinition<Q>];
    fn predicate_definitions(&self) -> &[PredicateDefinition<Q>];
    fn function_definitions(&self) -> &[GritFunctionDefinition<Q>];
    fn ignore_limit_pattern(&self) -> bool;
    fn call_built_in(
        &self,
        call: &'a CallBuiltIn<Q>,
        context: &'a Self,
        state: &mut State<'a, Q>,
        logs: &mut AnalysisLogs,
    ) -> GritResult<Q::ResolvedPattern<'a>>;
    fn call_callback<'b>(
        &self,
        call: &'a CallbackPattern,
        context: &'a Self,
        binding: &'b Q::ResolvedPattern<'a>,
        state: &mut State<'a, Q>,
        logs: &mut AnalysisLogs,
    ) -> GritResult<bool>;
    fn load_file(
        &self,
        file: &Q::File<'a>,
        state: &mut State<'a, Q>,
        logs: &mut AnalysisLogs,
    ) -> GritResult<bool>;
    fn files(&self) -> &FileOwners<Q::Tree<'a>>;
    fn language(&self) -> &Q::Language<'a>;
    fn exec_step(
        &'a self,
        step: &'a Pattern<Q>,
        binding: &Q::ResolvedPattern<'a>,
        state: &mut State<'a, Q>,
        logs: &mut AnalysisLogs,
    ) -> GritResult<bool>;
    fn name(&self) -> Option<&str>;
}
Expand description

Contains context necessary for query execution.

Required Methods§

Source

fn pattern_definitions(&self) -> &[PatternDefinition<Q>]

Source

fn predicate_definitions(&self) -> &[PredicateDefinition<Q>]

Source

fn function_definitions(&self) -> &[GritFunctionDefinition<Q>]

Source

fn ignore_limit_pattern(&self) -> bool

Source

fn call_built_in( &self, call: &'a CallBuiltIn<Q>, context: &'a Self, state: &mut State<'a, Q>, logs: &mut AnalysisLogs, ) -> GritResult<Q::ResolvedPattern<'a>>

Source

fn call_callback<'b>( &self, call: &'a CallbackPattern, context: &'a Self, binding: &'b Q::ResolvedPattern<'a>, state: &mut State<'a, Q>, logs: &mut AnalysisLogs, ) -> GritResult<bool>

Source

fn load_file( &self, file: &Q::File<'a>, state: &mut State<'a, Q>, logs: &mut AnalysisLogs, ) -> GritResult<bool>

Call this when “entering” a file to lazily load it. This MUST be implemented correctly, or the query engine will not work.

Source

fn files(&self) -> &FileOwners<Q::Tree<'a>>

Source

fn language(&self) -> &Q::Language<'a>

Source

fn exec_step( &'a self, step: &'a Pattern<Q>, binding: &Q::ResolvedPattern<'a>, state: &mut State<'a, Q>, logs: &mut AnalysisLogs, ) -> GritResult<bool>

Source

fn name(&self) -> Option<&str>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§