X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Futil%2Fser_macros.rs;fp=lightning%2Fsrc%2Futil%2Fser_macros.rs;h=93387609a401e54344362cd756d7818d84cb6cc4;hb=9d04227a66469a6e9569b9bff82d89f42121b0bd;hp=b93115dcc95933bbc5a617bbf1dc5083f25cdd10;hpb=99938455f7d9a18bf94694b8b18f4a82139b93cc;p=rust-lightning diff --git a/lightning/src/util/ser_macros.rs b/lightning/src/util/ser_macros.rs index b93115dc..93387609 100644 --- a/lightning/src/util/ser_macros.rs +++ b/lightning/src/util/ser_macros.rs @@ -7,6 +7,10 @@ // You may not use this file except in accordance with one or both of these // licenses. +//! Useful macros for generating serialization related code. + +/// Encode a TLV +#[macro_export] macro_rules! encode_tlv { ($stream: expr, $type: expr, $field: expr, required) => { BigSize($type).write($stream)?; @@ -72,6 +76,8 @@ macro_rules! get_varint_length_prefixed_tlv_length { }; } +/// Encode a varint length prefixed TLV +#[macro_export] macro_rules! encode_varint_length_prefixed_tlv { ($stream: expr, {$(($type: expr, $field: expr, $fieldty: ident)),*}) => { { use util::ser::BigSize; @@ -120,15 +126,17 @@ macro_rules! check_missing_tlv { }}; } +/// Decode a TLV. +#[macro_export] macro_rules! decode_tlv { ($reader: expr, $field: ident, required) => {{ - $field = ser::Readable::read(&mut $reader)?; + $field = $crate::util::ser::Readable::read(&mut $reader)?; }}; ($reader: expr, $field: ident, vec_type) => {{ - $field = Some(ser::Readable::read(&mut $reader)?); + $field = Some($crate::util::ser::Readable::read(&mut $reader)?); }}; ($reader: expr, $field: ident, option) => {{ - $field = Some(ser::Readable::read(&mut $reader)?); + $field = Some($crate::util::ser::Readable::read(&mut $reader)?); }}; }