ToTLV: Support ToTLV for TLVArray
This commit is contained in:
parent
e05f40c506
commit
79d6169c48
1 changed files with 26 additions and 1 deletions
|
@ -383,7 +383,7 @@ impl<'a, T: ToTLV> ToTLV for TLVArray<'a, T> {
|
|||
}
|
||||
tw.end_container()
|
||||
}
|
||||
Self::Ptr(_) => Err(Error::Invalid),
|
||||
Self::Ptr(t) => t.to_tlv(tw, tag_type),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -404,6 +404,31 @@ impl<'a, T: Debug + ToTLV + FromTLV<'a> + Copy> Debug for TLVArray<'a, T> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'a> ToTLV for TLVElement<'a> {
|
||||
fn to_tlv(&self, tw: &mut TLVWriter, _tag_type: TagType) -> Result<(), Error> {
|
||||
match self.get_element_type() {
|
||||
ElementType::S8(v) => v.to_tlv(tw, self.get_tag()),
|
||||
ElementType::U8(v) => v.to_tlv(tw, self.get_tag()),
|
||||
ElementType::U16(v) => v.to_tlv(tw, self.get_tag()),
|
||||
ElementType::U32(v) => v.to_tlv(tw, self.get_tag()),
|
||||
ElementType::U64(v) => v.to_tlv(tw, self.get_tag()),
|
||||
ElementType::False => tw.bool(self.get_tag(), false),
|
||||
ElementType::True => tw.bool(self.get_tag(), true),
|
||||
ElementType::Utf8l(v) | ElementType::Utf16l(v) => tw.utf16(self.get_tag(), v),
|
||||
ElementType::Str8l(v) | ElementType::Str16l(v) => tw.str16(self.get_tag(), v),
|
||||
ElementType::Null => tw.null(self.get_tag()),
|
||||
ElementType::Struct(_) => tw.start_struct(self.get_tag()),
|
||||
ElementType::Array(_) => tw.start_array(self.get_tag()),
|
||||
ElementType::List(_) => tw.start_list(self.get_tag()),
|
||||
ElementType::EndCnt => tw.end_container(),
|
||||
_ => {
|
||||
error!("ToTLV Not supported");
|
||||
Err(Error::Invalid)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::{FromTLV, OctetStr, TLVElement, TLVWriter, TagType, ToTLV};
|
||||
|
|
Loading…
Add table
Reference in a new issue