Line data Source code
1 : #ifndef HEADER_fd_src_flamenco_stakes_test_stake_delegations_util_h 2 : #define HEADER_fd_src_flamenco_stakes_test_stake_delegations_util_h 3 : 4 : #include "fd_stake_delegations.h" 5 : 6 : /* Test-only introspection. Production code should depend on delegation 7 : behavior, not the selected storage tier. */ 8 : 9 : static inline ulong 10 0 : test_stake_delegations_base_cnt( fd_stake_delegations_t const * stake_delegations ) { 11 0 : ulong cnt = 0UL; 12 0 : fd_stake_delegations_iter_t iter_[1]; 13 0 : for( fd_stake_delegations_iter_t * iter = 14 0 : fd_stake_delegations_iter_init( iter_, stake_delegations ); 15 0 : !fd_stake_delegations_iter_done( iter ); 16 0 : fd_stake_delegations_iter_next( iter ) ) { 17 0 : cnt++; 18 0 : } 19 0 : return cnt; 20 0 : } 21 : 22 : static inline int 23 : test_stake_delegations_find_copy( fd_stake_delegations_t const * stake_delegations, 24 : fd_pubkey_t const * stake_account, 25 0 : fd_stake_delegation_t * out ) { 26 0 : fd_stake_delegations_iter_t iter_[1]; 27 0 : for( fd_stake_delegations_iter_t * iter = 28 0 : fd_stake_delegations_iter_init( iter_, stake_delegations ); 29 0 : !fd_stake_delegations_iter_done( iter ); 30 0 : fd_stake_delegations_iter_next( iter ) ) { 31 0 : fd_stake_delegation_t const * ele = fd_stake_delegations_iter_ele( iter ); 32 0 : if( FD_LIKELY( memcmp( ele->stake_account.key, stake_account->key, sizeof(fd_pubkey_t) ) ) ) continue; 33 0 : if( out ) *out = *ele; 34 0 : return 1; 35 0 : } 36 0 : return 0; 37 0 : } 38 : 39 : static inline int 40 : test_stake_delegations_contains( fd_stake_delegations_t const * stake_delegations, 41 0 : fd_pubkey_t const * stake_account ) { 42 0 : return test_stake_delegations_find_copy( stake_delegations, stake_account, NULL ); 43 0 : } 44 : 45 : #endif /* HEADER_fd_src_flamenco_stakes_test_stake_delegations_util_h */