#![allow(clippy::style, clippy::complexity)]
#[allow(unused_imports)]
use crate::eval::format_validators::*;
use crate::eval::{ConditionEvaluator, ConditionResult, EvaluationContext};
use crate::generated::fv2510::OrdrspConditionEvaluatorFV2510;
pub struct OrdrspConditionEvaluatorFV2610 {
fallback: OrdrspConditionEvaluatorFV2510,
}
impl Default for OrdrspConditionEvaluatorFV2610 {
fn default() -> Self {
Self {
fallback: OrdrspConditionEvaluatorFV2510::default(),
}
}
}
const FV2610_OVERRIDES: &[u32] = &[84];
impl ConditionEvaluator for OrdrspConditionEvaluatorFV2610 {
fn message_type(&self) -> &str {
"ORDRSP"
}
fn format_version(&self) -> &str {
"FV2610"
}
fn evaluate(&self, condition: u32, ctx: &EvaluationContext) -> ConditionResult {
match condition {
84 => self.evaluate_84(ctx),
other => self.fallback.evaluate(other, ctx),
}
}
fn is_external(&self, condition: u32) -> bool {
matches!(condition, 84) || self.fallback.is_external(condition)
}
fn is_known(&self, condition: u32) -> bool {
FV2610_OVERRIDES.contains(&condition) || self.fallback.is_known(condition)
}
}
impl OrdrspConditionEvaluatorFV2610 {
fn evaluate_84(&self, ctx: &EvaluationContext) -> ConditionResult {
ctx.external.evaluate("order_is_smgw_device_takeover_offer")
}
}