1use crate::frames::v01::Layer01;
2use crate::v01::{EncodedLayer01, StagedLayer01, StagedLayer01Encoder, Tag01Profile};
3
4#[derive(Debug, PartialEq)]
6#[expect(clippy::large_enum_variant)]
7pub enum Layer<'a> {
8 Tag01(Layer01<'a>),
10 Unknown(Unknown<'a>),
12}
13
14#[derive(Debug, PartialEq, Clone)]
16#[expect(clippy::large_enum_variant)]
17#[cfg_attr(all(not(test), feature = "arbitrary"), derive(arbitrary::Arbitrary))]
18pub enum StagedLayer {
19 Tag01(StagedLayer01),
20 Unknown(EncodedUnknown),
21}
22
23#[derive(Debug, PartialEq, Clone)]
25#[expect(clippy::large_enum_variant)]
26pub enum EncodedLayer {
27 Tag01(EncodedLayer01),
28 Unknown(EncodedUnknown),
29}
30
31#[derive(Debug, Clone, Default, PartialEq)]
33pub struct Unknown<'a> {
34 pub tag: u8,
35 pub value: &'a [u8],
36}
37
38#[derive(Debug, Clone, Default, PartialEq)]
40pub struct EncodedUnknown {
41 pub tag: u8,
42 pub value: Vec<u8>,
43}
44
45#[derive(Debug, Clone)]
46pub enum LayerEncoder {
47 Tag01(StagedLayer01Encoder),
48 Unknown,
49}
50
51#[derive(Debug, Clone)]
58pub enum LayerProfile {
59 Tag01(Tag01Profile),
60 Unknown,
61}