lber_serde/structures/
sequence.rs1use std::default;
2use structure;
3use universal;
4
5use super::{ASNTag, Tag};
6use common::TagClass;
7
8#[derive(Clone, Debug, PartialEq)]
10pub struct Sequence {
11 pub id: u64,
12 pub class: TagClass,
13 pub inner: Vec<Tag>,
14}
15
16impl ASNTag for Sequence {
17 fn into_structure(self) -> structure::StructureTag {
18 structure::StructureTag {
19 id: self.id,
20 class: self.class,
21 payload: structure::PL::C(self.inner.into_iter().map(|x| x.into_structure()).collect()),
22 }
23 }
24}
25
26impl default::Default for Sequence {
27 fn default() -> Self {
28 Sequence {
29 id: universal::Types::Sequence as u64,
30 class: TagClass::Universal,
31 inner: Vec::new(),
32 }
33 }
34}
35
36#[derive(Clone, Debug, PartialEq)]
38pub struct Set {
39 pub id: u64,
40 pub class: TagClass,
41 pub inner: Vec<Tag>,
42}
43
44impl ASNTag for Set {
45 fn into_structure(self) -> structure::StructureTag {
46 structure::StructureTag {
47 id: self.id,
48 class: self.class,
49 payload: structure::PL::C(self.inner.into_iter().map(|x| x.into_structure()).collect()),
50 }
51 }
52}
53
54impl default::Default for Set {
55 fn default() -> Self {
56 Set {
57 id: universal::Types::Set as u64,
58 class: TagClass::Universal,
59 inner: Vec::new(),
60 }
61 }
62}
63
64#[derive(Clone, Debug, PartialEq)]
65pub struct SequenceOf<T> {
66 pub id: u64,
67 pub class: TagClass,
68 pub inner: Vec<T>,
69}
70
71impl<T: ASNTag + Sized> ASNTag for SequenceOf<T> {
72 fn into_structure(self) -> structure::StructureTag {
73 structure::StructureTag {
74 id: self.id,
75 class: self.class,
76 payload: structure::PL::C(self.inner.into_iter().map(|x| x.into_structure()).collect()),
77 }
78 }
79}
80
81impl<T: ASNTag + Sized> default::Default for SequenceOf<T> {
82 fn default() -> Self {
83 SequenceOf::<T> {
84 id: universal::Types::Sequence as u64,
85 class: TagClass::Universal,
86 inner: Vec::new(),
87 }
88 }
89}
90
91#[derive(Clone, Debug, PartialEq)]
92pub struct SetOf<T> {
93 pub id: u64,
94 pub class: TagClass,
95 pub inner: Vec<T>,
96}
97
98impl<T: ASNTag + Sized> ASNTag for SetOf<T> {
99 fn into_structure(self) -> structure::StructureTag {
100 structure::StructureTag {
101 id: self.id,
102 class: self.class,
103 payload: structure::PL::C(self.inner.into_iter().map(|x| x.into_structure()).collect()),
104 }
105 }
106}
107
108impl<T: ASNTag + Sized> default::Default for SetOf<T> {
109 fn default() -> Self {
110 SetOf {
111 id: universal::Types::Set as u64,
112 class: TagClass::Universal,
113 inner: Vec::new(),
114 }
115 }
116}