use proc_macro2::TokenStream;
use crate::parsing::bitfields::bitfield::Bitfield;
pub trait Feature {
fn generate_feature(&self, bitfield: &Bitfield) -> TokenStream;
fn enabled(&self, bitfield: &Bitfield) -> bool;
fn feature_position(&self) -> FeaturePosition;
fn order_priority(&self) -> u32;
}
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum FeaturePosition {
Above,
Inside,
Below,
}
pub fn is_bit_ops_feature_enabled(
bitfield: &Bitfield,
bit_ops_enabled: bool,
did_user_set_bit_op_flag: bool,
) -> bool {
if !bitfield.arguments().generate_bit_ops() {
return bit_ops_enabled && did_user_set_bit_op_flag;
}
bit_ops_enabled
}