mod call_builder;
mod contract_ref;
use self::{
call_builder::CallBuilder,
contract_ref::ContractRef,
};
use crate::{
traits::GenerateCodeUsing,
GenerateCode,
};
use derive_more::From;
use proc_macro2::TokenStream as TokenStream2;
use quote::quote;
#[derive(From)]
pub struct ContractReference<'a> {
contract: &'a ir::Contract,
}
impl_as_ref_for_generator!(ContractReference);
impl GenerateCode for ContractReference<'_> {
fn generate_code(&self) -> TokenStream2 {
let call_builder = self.generate_code_using::<CallBuilder>();
let call_forwarder = self.generate_code_using::<ContractRef>();
quote! {
#call_builder
#call_forwarder
}
}
}