use crate::GenerateCode;
use derive_more::From;
use proc_macro2::TokenStream as TokenStream2;
use syn::spanned::Spanned;
#[derive(From, Copy, Clone)]
pub struct Event<'a> {
item: &'a ir::Event,
}
impl GenerateCode for Event<'_> {
fn generate_code(&self) -> TokenStream2 {
let item = self.item.item();
let anonymous = self
.item
.anonymous()
.then(|| quote::quote! { #[ink(anonymous)] });
let signature_topic = self
.item
.signature_topic_hex()
.map(|hex_s| quote::quote! { #[ink(signature_topic = #hex_s)] });
let cfg_attrs = self.item.get_cfg_attrs(item.span());
quote::quote! (
#( #cfg_attrs )*
#[cfg_attr(feature = "std", derive(::ink::EventMetadata))]
#[derive(::ink::Event)]
#[::ink::scale_derive(Encode, Decode)]
#anonymous
#signature_topic
#item
)
}
}