Move entrypoint boilerplate into a macro

This commit is contained in:
Greg Fitzgerald
2019-03-21 14:36:25 -06:00
parent 412ebfcaf2
commit 4bb88619fd
3 changed files with 25 additions and 36 deletions

View File

@ -20,12 +20,32 @@ macro_rules! solana_entrypoint(
($entrypoint:ident) => (
#[no_mangle]
pub extern "C" fn process(
program_id: &Pubkey,
keyed_accounts: &mut [KeyedAccount],
program_id: &solana_sdk::pubkey::Pubkey,
keyed_accounts: &mut [solana_sdk::account::KeyedAccount],
data: &[u8],
tick_height: u64
) -> Result<(), InstructionError> {
) -> Result<(), solana_sdk::transaction::InstructionError> {
$entrypoint(program_id, keyed_accounts, data, tick_height)
}
)
);
// Macro to define an entrypoint from a native `process_instruction` function.
#[macro_export]
macro_rules! process_instruction_entrypoint(
($process_instruction:ident) => (
solana_sdk::solana_entrypoint!(process_instruction_entrypoint);
fn process_instruction_entrypoint(
program_id: &solana_sdk::pubkey::Pubkey,
keyed_accounts: &mut [solana_sdk::account::KeyedAccount],
data: &[u8],
tick_height: u64,
) -> Result<(), solana_sdk::transaction::InstructionError> {
solana_logger::setup();
log::trace!("process_instruction: {:?}", data);
log::trace!("keyed_accounts: {:?}", keyed_accounts);
$process_instruction(program_id, keyed_accounts, data, tick_height)
}
)
);