Subversion
|
Taking the "diff" of two hash tables. More...
Typedefs | |
typedef svn_error_t *(* | svn_hash_diff_func_t) (const void *key, apr_ssize_t klen, enum svn_hash_diff_key_status status, void *baton) |
Function type for expressing a key's status between two hash tables. | |
Enumerations | |
enum | svn_hash_diff_key_status { svn_hash_diff_key_both, svn_hash_diff_key_a, svn_hash_diff_key_b } |
Hash key status indicator for svn_hash_diff_func_t. More... | |
Functions | |
svn_error_t * | svn_hash_diff (apr_hash_t *hash_a, apr_hash_t *hash_b, svn_hash_diff_func_t diff_func, void *diff_func_baton, apr_pool_t *pool) |
Take the diff of two hashtables. More... | |
Taking the "diff" of two hash tables.
svn_error_t* svn_hash_diff | ( | apr_hash_t * | hash_a, |
apr_hash_t * | hash_b, | ||
svn_hash_diff_func_t | diff_func, | ||
void * | diff_func_baton, | ||
apr_pool_t * | pool | ||
) |
Take the diff of two hashtables.
For each key in the union of hash_a's and hash_b's keys, invoke diff_func exactly once, passing the key, the key's length, an enum svn_hash_diff_key_status
indicating which table(s) the key appears in, and diff_func_baton.
Process all keys of hash_a first, then all remaining keys of hash_b.
If diff_func returns error, return that error immediately, without applying diff_func to anything else.
hash_a or hash_b or both may be NULL; treat a null table as though empty.
Use pool for temporary allocation.