use super::*;
mod display;
mod iters;
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum FlagKind {
Enumerate,
Flags,
}
#[derive(Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct FlagDeclaration {
pub kind: FlagKind,
pub annotations: AnnotationNode,
pub name: IdentifierNode,
pub layout: Option<ExpressionKind>,
pub implements: Option<ExpressionKind>,
pub body: Vec<FlagTerm>,
pub span: Range<u32>,
}
#[derive(Clone, PartialEq, Eq, Hash, From)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum FlagTerm {
Macro(ProceduralNode),
Encode(EncodeDeclaration),
Method(MethodDeclaration),
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct EncodeDeclaration {
pub annotations: AnnotationNode,
pub name: IdentifierNode,
pub value: Option<ExpressionKind>,
pub span: Range<u32>,
}