use super::substitution_map::SubstitutionsMap;
pub fn substitutions() -> SubstitutionsMap {
let mut substitutions = SubstitutionsMap::new();
add_managed_types(&mut substitutions);
add_storage_mappers(&mut substitutions);
substitutions
}
#[rustfmt::skip]
fn add_managed_type(substitutions: &mut SubstitutionsMap, type_name: &proc_macro2::TokenStream) {
substitutions.add_substitution(
quote!(#type_name<Self::Api>),
quote!(#type_name<Self::Api>));
substitutions.add_substitution(
quote!(#type_name::),
quote!(drt_sc::types::#type_name::<Self::Api>::),
);
substitutions.add_substitution(
quote!(#type_name),
quote!(drt_sc::types::#type_name<Self::Api>),
);
}
fn add_managed_type_with_generics(
substitutions: &mut SubstitutionsMap,
type_name: &proc_macro2::TokenStream,
) {
substitutions.add_substitution(
quote!(#type_name<Self::Api, ),
quote!(#type_name<Self::Api, ),
);
substitutions.add_substitution(quote!(#type_name<), quote!(#type_name<Self::Api, ));
}
fn add_managed_types(substitutions: &mut SubstitutionsMap) {
add_managed_type(substitutions, "e!(ManagedSCError));
add_managed_type(substitutions, "e!(AsyncCall));
add_managed_type(substitutions, "e!(BigFloat));
add_managed_type(substitutions, "e!(BigInt));
add_managed_type(substitutions, "e!(BigUint));
add_managed_type(substitutions, "e!(EllipticCurveComponents));
add_managed_type(substitutions, "e!(EllipticCurve));
add_managed_type(substitutions, "e!(ManagedBuffer));
add_managed_type(substitutions, "e!(ManagedMap));
add_managed_type(substitutions, "e!(ManagedAsyncCallError));
add_managed_type_with_generics(substitutions, "e!(ManagedAsyncCallResult));
add_managed_type(substitutions, "e!(DctTokenPaymentMultiArg));
add_managed_type(substitutions, "e!(DctTokenPaymentMultiValue));
add_managed_type_with_generics(substitutions, "e!(MultiValueEncodedIterator));
add_managed_type_with_generics(substitutions, "e!(MultiValueEncoded));
add_managed_type_with_generics(substitutions, "e!(ManagedVarArgs));
add_managed_type_with_generics(substitutions, "e!(ManagedMultiResultVec));
add_managed_type_with_generics(substitutions, "e!(MultiValueManagedVecCounted));
add_managed_type_with_generics(substitutions, "e!(ManagedCountedVarArgs));
add_managed_type_with_generics(substitutions, "e!(ManagedCountedMultiResultVec));
add_managed_type_with_generics(substitutions, "e!(MultiValueManagedVec));
add_managed_type(substitutions, "e!(RewaOrDctTokenIdentifier));
add_managed_type(substitutions, "e!(RewaOrDctTokenPayment));
add_managed_type(substitutions, "e!(DctTokenData));
add_managed_type(substitutions, "e!(DctTokenPayment));
add_managed_type(substitutions, "e!(ManagedAddress));
add_managed_type(substitutions, "e!(ManagedBufferBuilder));
add_managed_type_with_generics(substitutions, "e!(ManagedByteArray));
add_managed_type_with_generics(substitutions, "e!(ManagedOption));
add_managed_type_with_generics(substitutions, "e!(ManagedRef));
add_managed_type_with_generics(substitutions, "e!(ManagedVecOwnedIterator));
add_managed_type_with_generics(substitutions, "e!(ManagedVecRefIterator));
add_managed_type_with_generics(substitutions, "e!(ManagedVecRef));
add_managed_type_with_generics(substitutions, "e!(ManagedVec));
add_managed_type_with_generics(substitutions, "e!(PreloadedManagedBuffer));
add_managed_type(substitutions, "e!(RandomnessSource));
add_managed_type(substitutions, "e!(TokenIdentifier));
add_managed_type(substitutions, "e!(FunctionCall));
}
fn add_storage_mapper_single_generic_arg(
substitutions: &mut SubstitutionsMap,
mapper_name: &proc_macro2::TokenStream,
) {
substitutions.add_substitution(
quote!(#mapper_name<Self::Api>),
quote!(#mapper_name<Self::Api>),
);
substitutions.add_substitution(quote!(#mapper_name), quote!(#mapper_name<Self::Api>));
}
fn add_storage_mapper(
substitutions: &mut SubstitutionsMap,
mapper_name: &proc_macro2::TokenStream,
) {
add_managed_type_with_generics(substitutions, mapper_name);
}
fn add_storage_mappers(substitutions: &mut SubstitutionsMap) {
add_storage_mapper_single_generic_arg(substitutions, "e!(FungibleTokenMapper));
add_storage_mapper_single_generic_arg(substitutions, "e!(NonFungibleTokenMapper));
add_storage_mapper_single_generic_arg(substitutions, "e!(TokenAttributesMapper));
add_storage_mapper_single_generic_arg(substitutions, "e!(UniqueIdMapper));
add_storage_mapper_single_generic_arg(substitutions, "e!(UserMapper));
add_storage_mapper(substitutions, "e!(BiDiMapper));
add_storage_mapper(substitutions, "e!(LinkedListMapper));
add_storage_mapper(substitutions, "e!(MapMapper));
add_storage_mapper(substitutions, "e!(MapStorageMapper));
add_storage_mapper(substitutions, "e!(SetMapper));
add_storage_mapper(substitutions, "e!(UnorderedSetMapper));
add_storage_mapper(substitutions, "e!(SingleValueMapper));
add_storage_mapper(substitutions, "e!(VecMapper));
add_storage_mapper(substitutions, "e!(QueueMapper));
add_storage_mapper(substitutions, "e!(WhitelistMapper));
}