use crate::source::SourceRange;
#[derive(Debug, Clone)]
pub struct OidAssignment {
pub components: Vec<OidComponent>,
pub range: SourceRange,
}
#[derive(Debug, Clone)]
pub enum OidComponent {
Name {
name: String,
range: SourceRange,
},
Number {
value: u32,
range: SourceRange,
},
NamedNumber {
name: String,
number: u32,
name_range: SourceRange,
range: SourceRange,
},
QualifiedName {
module: String,
name: String,
range: SourceRange,
},
QualifiedNamedNumber {
module: String,
name: String,
number: u32,
name_range: SourceRange,
range: SourceRange,
},
}
impl OidComponent {
pub fn range(&self) -> SourceRange {
match self {
OidComponent::Name { range, .. }
| OidComponent::Number { range, .. }
| OidComponent::NamedNumber { range, .. }
| OidComponent::QualifiedName { range, .. }
| OidComponent::QualifiedNamedNumber { range, .. } => *range,
}
}
}