diff --git a/programs/budget/src/lib.rs b/programs/budget/src/lib.rs index f92466625e..6cf66ffe41 100644 --- a/programs/budget/src/lib.rs +++ b/programs/budget/src/lib.rs @@ -1,22 +1,5 @@ mod budget_processor; use crate::budget_processor::process_instruction; -use log::*; -use solana_sdk::account::KeyedAccount; -use solana_sdk::pubkey::Pubkey; -use solana_sdk::solana_entrypoint; -use solana_sdk::transaction::InstructionError; -solana_entrypoint!(entrypoint); -fn entrypoint( - program_id: &Pubkey, - keyed_accounts: &mut [KeyedAccount], - data: &[u8], - tick_height: u64, -) -> Result<(), InstructionError> { - solana_logger::setup(); - - trace!("process_instruction: {:?}", data); - trace!("keyed_accounts: {:?}", keyed_accounts); - process_instruction(program_id, keyed_accounts, data, tick_height) -} +solana_sdk::process_instruction_entrypoint!(process_instruction); diff --git a/programs/config/src/lib.rs b/programs/config/src/lib.rs index c6cdb322eb..9120d640da 100644 --- a/programs/config/src/lib.rs +++ b/programs/config/src/lib.rs @@ -3,9 +3,9 @@ use log::*; use solana_sdk::account::KeyedAccount; use solana_sdk::pubkey::Pubkey; -use solana_sdk::solana_entrypoint; use solana_sdk::transaction::InstructionError; +solana_sdk::process_instruction_entrypoint!(process_instruction); fn process_instruction( _program_id: &Pubkey, keyed_accounts: &mut [KeyedAccount], @@ -26,20 +26,6 @@ fn process_instruction( Ok(()) } -solana_entrypoint!(entrypoint); -fn entrypoint( - program_id: &Pubkey, - keyed_accounts: &mut [KeyedAccount], - data: &[u8], - tick_height: u64, -) -> Result<(), InstructionError> { - solana_logger::setup(); - - trace!("process_instruction: {:?}", data); - trace!("keyed_accounts: {:?}", keyed_accounts); - process_instruction(program_id, keyed_accounts, data, tick_height) -} - #[cfg(test)] mod tests { use super::*; diff --git a/sdk/src/native_program.rs b/sdk/src/native_program.rs index 36088138a9..86c28cc918 100644 --- a/sdk/src/native_program.rs +++ b/sdk/src/native_program.rs @@ -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) + } + ) +);