pso_packet: u16 and u32 arrays

This commit is contained in:
jake 2019-10-23 22:49:11 -07:00
parent 0a26d1d8c6
commit 48599ee116
2 changed files with 37 additions and 2 deletions

View File

@ -8,5 +8,6 @@ edition = "2018"
proc-macro = true
[dependencies]
syn = {version = "0.15", features=["full", "extra-traits", "parsing"]}
quote = "0.6"
syn = {version = "1.0", features=["full", "extra-traits", "parsing"]}
quote = "1.0"
proc-macro2 = "1.0"

View File

@ -80,6 +80,40 @@ pub fn pso_packet(attr: TokenStream, item: TokenStream) -> TokenStream {
},
});
},
"u16" => {
from_bytes.push(quote! {
#ident: {
let mut b: [u16; #array_length] = [0; #array_length];
if let Ok(len) = cur.read(&mut b) {
if len != #array_length {
return Err(PacketParseError::NotEnoughBytes);
}
}
else {
return Err(PacketParseError::NotEnoughBytes);
};
b
},
});
},
"u32" => {
from_bytes.push(quote! {
#ident: {
let mut b: [u32; #array_length] = [0; #array_length];
if let Ok(len) = cur.read(&mut b) {
if len != #array_length {
return Err(PacketParseError::NotEnoughBytes);
}
}
else {
return Err(PacketParseError::NotEnoughBytes);
};
b
},
});
},
_ => {
return syn::Error::new(path.path.segments[0].ident.span(), "type not supported")
.to_compile_error().into();