I guess I'm missing something. Why not just move the existing C declarations
verbatim to an APR-free header (from svn_types.h to svn_types_impl.h, for
instance), and in C++ use them directly like this (proposed lines marked '>'):
/**
* @brief Revision number type.
*/
- enum class number : long
+ enum class number : svn__impl__revnum_t
> enum class number : svn_revnum_t
{
- invalid = -1, ///< Invalid revision number.
+ invalid = SVN__IMPL__INVALID_REVNUM, ///< Invalid revision number.
> invalid = SVN_INVALID_REVNUM, ///< Invalid revision number.
};
Then there would be no need for all the reimplementing in svn_types.h with
lines like "A = __impl__A".
Oh... I suppose the reason is because you don't want the C++ headers to expose
the original C declarations. But is that such a problem? I'm thinking of the
existing SWIG Python bindings where we map C name svn_client_add to Python name
"svn.client.add", primarily, but we also leave the original name hanging around
as "svn.client.svn_client_add" or something like that, and AFAIK it's not much
of a problem, just a little untidy.
Overall, if this is what it takes for you to proceed with the good work, then
sure, go ahead: it looks like a manageable amount of churn.
--
- Julian