use super::common::Ident;
use crate::source::SourceRange;
#[derive(Debug, PartialEq, Eq)]
pub struct OidAssignment {
pub components: Vec<OidComponent>,
pub span: SourceRange,
}
#[derive(Debug, PartialEq, Eq)]
pub enum OidComponent {
Name(Ident),
Number {
value: u32,
span: SourceRange,
},
NamedNumber {
name: Ident,
num: u32,
span: SourceRange,
},
QualifiedName {
module_name: Ident,
name: Ident,
span: SourceRange,
},
QualifiedNamedNumber {
module_name: Ident,
name: Ident,
num: u32,
span: SourceRange,
},
}
impl OidComponent {
pub fn span(&self) -> SourceRange {
match self {
OidComponent::Name(ident) => ident.span,
OidComponent::Number { span, .. }
| OidComponent::NamedNumber { span, .. }
| OidComponent::QualifiedName { span, .. }
| OidComponent::QualifiedNamedNumber { span, .. } => *span,
}
}
}