use std::hash::Hash;
use graph_process_manager_core::process::config::AbstractNodeKind;
use crate::core::terms::term::{LanguageTerm, RewritableLanguageOperatorSymbol};
#[derive(Clone, PartialEq, Eq, Hash)]
pub struct RewriteNodeKind<LOS : RewritableLanguageOperatorSymbol> {
pub term : LanguageTerm<LOS>,
pub concrete_rewrite_phase_index : usize
}
impl<LOS : RewritableLanguageOperatorSymbol> RewriteNodeKind<LOS> {
pub fn new(
term : LanguageTerm<LOS>,
concrete_rewrite_phase_index : usize
) -> Self {
Self { term, concrete_rewrite_phase_index }
}
}
impl<LOS : RewritableLanguageOperatorSymbol> AbstractNodeKind for RewriteNodeKind<LOS> {
fn is_included_for_memoization(&self, memoized_node: &Self) -> bool {
self.term == memoized_node.term && self.concrete_rewrite_phase_index == memoized_node.concrete_rewrite_phase_index
}
}