//! Translation implementations for logical operators

use crate::utils::{direct_binary_operator_translation, direct_unary_operator_translation};
use crate::TranslationRegistry;
use hamelin_lib::func::defs::{And, Not, Or};

/// Register all logical operator translations.
pub fn register(registry: &mut TranslationRegistry) {
    // Not uses direct unary operator translation (NOT x)
    registry.register::<Not>(direct_unary_operator_translation);

    // And uses direct binary operator translation (x AND y)
    registry.register::<And>(direct_binary_operator_translation);

    // Or uses direct binary operator translation (x OR y)
    registry.register::<Or>(direct_binary_operator_translation);
}
