rasn_compiler/intermediate/
parameterization.rs

1use super::ASN1Type;
2
3#[derive(Debug, Clone, PartialEq)]
4pub struct Parameterization {
5    pub parameters: Vec<ParameterizationArgument>,
6}
7
8impl From<Vec<ParameterizationArgument>> for Parameterization {
9    fn from(value: Vec<ParameterizationArgument>) -> Self {
10        Self { parameters: value }
11    }
12}
13
14#[derive(Debug, Clone, PartialEq)]
15pub struct ParameterizationArgument {
16    pub dummy_reference: String,
17    pub param_governor: ParameterGovernor,
18}
19
20impl From<&str> for ParameterizationArgument {
21    fn from(value: &str) -> Self {
22        Self {
23            dummy_reference: value.to_owned(),
24            param_governor: ParameterGovernor::None,
25        }
26    }
27}
28
29impl From<(ASN1Type, &str)> for ParameterizationArgument {
30    fn from(value: (ASN1Type, &str)) -> Self {
31        Self {
32            dummy_reference: value.1.to_owned(),
33            param_governor: ParameterGovernor::TypeOrClass(value.0),
34        }
35    }
36}
37
38impl From<(&str, &str)> for ParameterizationArgument {
39    fn from(value: (&str, &str)) -> Self {
40        Self {
41            dummy_reference: value.1.to_owned(),
42            param_governor: ParameterGovernor::Class(value.0.to_owned()),
43        }
44    }
45}
46
47#[derive(Debug, Default, Clone, PartialEq)]
48pub enum ParameterGovernor {
49    #[default]
50    None,
51    TypeOrClass(ASN1Type),
52    Class(String),
53}