rasn_compiler/intermediate/
parameterization.rs1use 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}