diff options
Diffstat (limited to 'subversion/include/svn_hash.h')
-rw-r--r-- | subversion/include/svn_hash.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/subversion/include/svn_hash.h b/subversion/include/svn_hash.h index 50ed10a4b3f84..8303f077e18e9 100644 --- a/subversion/include/svn_hash.h +++ b/subversion/include/svn_hash.h @@ -239,19 +239,44 @@ svn_hash_from_cstring_keys(apr_hash_t **hash, const apr_array_header_t *keys, apr_pool_t *pool); +/* For the Subversion developers, this #define makes the svn_hash_gets and + * svn_hash_sets macros forward their parameters through functions in order to + * gain type checking for the 'key' parameter which the basic apr_hash_* APIs + * declare only as 'void *'. + */ +#ifdef SVN_DEBUG +#define SVN_HASH__GETS_SETS +#endif + +#ifdef SVN_HASH__GETS_SETS +void * +svn_hash__gets_debug(apr_hash_t *ht, const char *key); + +#define svn_hash_gets(ht, key) \ + svn_hash__gets_debug(ht, key) +#else /** Shortcut for apr_hash_get() with a const char * key. * * @since New in 1.8. */ #define svn_hash_gets(ht, key) \ apr_hash_get(ht, key, APR_HASH_KEY_STRING) +#endif + +#ifdef SVN_HASH__GETS_SETS +void +svn_hash__sets_debug(apr_hash_t *ht, const char *key, const void *value); +#define svn_hash_sets(ht, key, val) \ + svn_hash__sets_debug(ht, key, val) +#else /** Shortcut for apr_hash_set() with a const char * key. * * @since New in 1.8. */ #define svn_hash_sets(ht, key, val) \ apr_hash_set(ht, key, APR_HASH_KEY_STRING, val) +#endif /** @} */ |