dougm 01/03/04 19:53:29 Added: xs/APR/Base64 APR__Base64.h xs/APR/Brigade APR__Brigade.h xs/APR/Lib APR__Lib.h xs/APR/Lock APR__Lock.h xs/APR/Pool APR__Pool.h xs/APR/UUID APR__UUID.h Log: start of the wrapper functions for APR Revision Changes Path 1.1 modperl-2.0/xs/APR/Base64/APR__Base64.h Index: APR__Base64.h =================================================================== static MP_INLINE void mpxs_apr_base64_encode(pTHX_ SV *sv, SV *arg) { STRLEN len; int encoded_len; char *data = SvPV(arg, len); mpxs_sv_grow(sv, apr_base64_encode_len(len)); encoded_len = apr_base64_encode_binary(SvPVX(sv), data, len); mpxs_sv_cur_set(sv, encoded_len); } static MP_INLINE void mpxs_apr_base64_decode(pTHX_ SV *sv, SV *arg) { STRLEN len; int decoded_len; char *data = SvPV(arg, len); mpxs_sv_grow(sv, apr_base64_decode_len(data)); decoded_len = apr_base64_decode_binary(SvPVX(sv), data); mpxs_sv_cur_set(sv, decoded_len); } static XS(MPXS_apr_base64_encode) { dXSARGS; mpxs_usage_items_1("data"); mpxs_set_targ(mpxs_apr_base64_encode, ST(0)); } static XS(MPXS_apr_base64_decode) { dXSARGS; mpxs_usage_items_1("data"); mpxs_set_targ(mpxs_apr_base64_decode, ST(0)); } 1.1 modperl-2.0/xs/APR/Brigade/APR__Brigade.h Index: APR__Brigade.h =================================================================== static MP_INLINE apr_bucket_brigade *mpxs_apr_brigade_create(pTHX_ SV *CLASS, apr_pool_t *p) { return apr_brigade_create(p); } 1.1 modperl-2.0/xs/APR/Lib/APR__Lib.h Index: APR__Lib.h =================================================================== static MP_INLINE void mpxs_apr_strerror(pTHX_ SV *sv, SV *arg) { apr_status_t statcode = mp_xs_sv2_status(arg); char *ptr; mpxs_sv_grow(sv, 128-1); ptr = apr_strerror(statcode, SvPVX(sv), SvLEN(sv)); mpxs_sv_cur_set(sv, strlen(ptr)); /*XXX*/ } static MP_INLINE void mpxs_apr_generate_random_bytes(pTHX_ SV *sv, SV *arg) { int len = (int)SvIV(arg); mpxs_sv_grow(sv, len); (void)apr_generate_random_bytes(SvPVX(sv), len); mpxs_sv_cur_set(sv, len); } static XS(MPXS_apr_strerror) { dXSARGS; mpxs_usage_items_1("status_code"); mpxs_set_targ(mpxs_apr_strerror, ST(0)); } static XS(MPXS_apr_generate_random_bytes) { dXSARGS; mpxs_usage_items_1("length"); mpxs_set_targ(mpxs_apr_generate_random_bytes, ST(0)); } 1.1 modperl-2.0/xs/APR/Lock/APR__Lock.h Index: APR__Lock.h =================================================================== #define apr_lock_DESTROY(lock) (void)apr_lock_destroy(lock) static MP_INLINE apr_lock_t *mpxs_apr_lock_create(pTHX_ SV *CLASS, apr_pool_t *p, apr_locktype_e type, apr_lockscope_e scope, const char *fname) { apr_lock_t *retval=NULL; (void)apr_lock_create(&retval, type, scope, fname, p); return retval; } 1.1 modperl-2.0/xs/APR/Pool/APR__Pool.h Index: APR__Pool.h =================================================================== #define apr_pool_DESTROY(p) apr_pool_destroy(p) static MP_INLINE apr_pool_t *mpxs_apr_pool_create(pTHX_ SV *obj) { apr_pool_t *parent = (apr_pool_t *)mpxs_sv_object_deref(obj); apr_pool_t *retval = NULL; (void)apr_pool_create(&retval, parent); return retval; } 1.1 modperl-2.0/xs/APR/UUID/APR__UUID.h Index: APR__UUID.h =================================================================== #define mpxs_apr_uuid_alloc() \ (apr_uuid_t *)safemalloc(sizeof(apr_uuid_t)) static MP_INLINE apr_uuid_t *mpxs_apr_uuid_get(pTHX_ SV *CLASS) { apr_uuid_t *uuid = mpxs_apr_uuid_alloc(); apr_uuid_get(uuid); return uuid; } static MP_INLINE void mp_apr_uuid_format(pTHX_ SV *sv, SV *obj) { apr_uuid_t *uuid = mp_xs_sv2_uuid(obj); mpxs_sv_grow(sv, APR_UUID_FORMATTED_LENGTH); apr_uuid_format(SvPVX(sv), uuid); mpxs_sv_cur_set(sv, APR_UUID_FORMATTED_LENGTH); } static MP_INLINE apr_uuid_t *mpxs_apr_uuid_parse(pTHX_ SV *CLASS, char *buf) { apr_uuid_t *uuid = mpxs_apr_uuid_alloc(); apr_uuid_parse(uuid, buf); return uuid; } static XS(MPXS_apr_uuid_format) { dXSARGS; mpxs_usage_items_1("uuid"); mpxs_set_targ(mp_apr_uuid_format, ST(0)); } #define apr_uuid_DESTROY(uuid) safefree(uuid)