use proc_macro2::TokenStream;
use quote::quote;
use syn::{DeriveInput, Result};
use crate::decode::derive_decode;
use crate::encode::derive_encode_fields_only;
use crate::size::derive_encoded_size_fields_only;
pub fn expand_packet(input: &DeriveInput, packet_id: i32) -> Result<TokenStream> {
let name = &input.ident;
let encode_impl = derive_encode_fields_only(input)?;
let decode_impl = derive_decode(input)?;
let size_impl = derive_encoded_size_fields_only(input)?;
Ok(quote! {
impl #name {
pub const PACKET_ID: i32 = #packet_id;
}
#encode_impl
#decode_impl
#size_impl
})
}