sysml_parser/
parsed_member.rs

1// This is free and unencumbered software released into the public domain.
2
3use crate::{ParsedAttribute, ParsedBlock, ParsedImport, ParsedPackage, ParsedPort};
4use sysml_model::{Element, Namespace};
5
6#[doc(hidden)]
7#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
8pub enum ParsedMember {
9    Import(ParsedImport),
10    Package(ParsedPackage),
11    BlockUsage(ParsedBlock),
12    AttributeUsage(ParsedAttribute),
13    PortUsage(ParsedPort),
14}
15
16impl Namespace for ParsedMember {}
17
18impl Element for ParsedMember {
19    fn name(&self) -> Option<&str> {
20        use ParsedMember::*;
21        match self {
22            Import(import) => import.name(),
23            Package(package) => package.name(),
24            BlockUsage(usage) => usage.name(),
25            AttributeUsage(usage) => usage.name(),
26            PortUsage(usage) => usage.name(),
27        }
28    }
29
30    fn short_name(&self) -> Option<&str> {
31        use ParsedMember::*;
32        match self {
33            Import(import) => import.short_name(),
34            Package(package) => package.short_name(),
35            BlockUsage(usage) => usage.short_name(),
36            AttributeUsage(usage) => usage.short_name(),
37            PortUsage(usage) => usage.short_name(),
38        }
39    }
40}