Apache-DAV
view release on metacpan or search on metacpan
xs/Apache/DAV/DynProvider/DynProvider.xs view on Meta::CPAN
#include "mod_dav.h"
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "moddav_xs_sv_convert.h"
#include "moddav_xs_typedefs.h"
static SV * davxs_Apache__DAV__DynProvider_obj[4] ;
void Apache__DAV__DynProvider_new_init (pTHX_ Apache__DAV__DynProvider obj, SV * item, int overwrite) {
SV * * tmpsv ;
if (SvTYPE(item) == SVt_PVMG)
memcpy (obj, (void *)SvIVX(item), sizeof (*obj)) ;
else if (SvTYPE(item) == SVt_PVHV) {
if ((tmpsv = hv_fetch((HV *)item, "id", sizeof("id") - 1, 0)) || overwrite) {
obj -> id = (int)davxs_sv2_IV((tmpsv && *tmpsv?*tmpsv:&PL_sv_undef)) ;
}
if ((tmpsv = hv_fetch((HV *)item, "type", sizeof("type") - 1, 0)) || overwrite) {
obj -> type = (int)davxs_sv2_IV((tmpsv && *tmpsv?*tmpsv:&PL_sv_undef)) ;
}
if ((tmpsv = hv_fetch((HV *)item, "hooks", sizeof("hooks") - 1, 0)) || overwrite) {
obj -> hooks = (const void *)davxs_sv2_PTR((tmpsv && *tmpsv?*tmpsv:&PL_sv_undef)) ;
}
; }
else
croak ("initializer for Apache::DAV::DynProvider::new is not a hash or object reference") ;
} ;
/* --- Apache::DAV::DynProvider -> is_active --- */
static int davxs_cb_Apache__DAV__DynProvider__is_active (SV * __cbdest,dav_dyn_context * ctx,int id)
{
int __retval ;
SV * __retsv ;
int __cnt ;
dSP ;
ENTER ;
SAVETMPS ;
PUSHMARK(SP) ;
PUSHs(__cbdest) ;
PUSHs(davxs_Apache__DAV__DynContext_2obj(ctx)) ;
PUSHs(davxs_IV_2obj(id)) ;
PUTBACK ;
__cnt = perl_call_method("is_active", G_SCALAR) ;
if (__cnt != 1)
croak ("davxs_cb_Apache__DAV__DynProvider__is_active expected 1 return values") ;
SPAGAIN ;
__retsv = POPs;
__retval = (int)davxs_sv2_IV(__retsv);
PUTBACK ;
FREETMPS ;
LEAVE ;
return __retval ;
}
static int davxs_cb_Apache__DAV__DynProvider__is_active_obj0 (dav_dyn_context * ctx,int id)
{
return davxs_cb_Apache__DAV__DynProvider__is_active (davxs_Apache__DAV__DynProvider_obj[0],ctx,id) ;
}
static int davxs_cb_Apache__DAV__DynProvider__is_active_obj1 (dav_dyn_context * ctx,int id)
{
return davxs_cb_Apache__DAV__DynProvider__is_active (davxs_Apache__DAV__DynProvider_obj[1],ctx,id) ;
}
static int davxs_cb_Apache__DAV__DynProvider__is_active_obj2 (dav_dyn_context * ctx,int id)
{
return davxs_cb_Apache__DAV__DynProvider__is_active (davxs_Apache__DAV__DynProvider_obj[2],ctx,id) ;
}
static int davxs_cb_Apache__DAV__DynProvider__is_active_obj3 (dav_dyn_context * ctx,int id)
{
return davxs_cb_Apache__DAV__DynProvider__is_active (davxs_Apache__DAV__DynProvider_obj[3],ctx,id) ;
}
typedef int (*tdavxs_cb_Apache__DAV__DynProvider__is_active_func)(dav_dyn_context * ctx,int id) ;
static tdavxs_cb_Apache__DAV__DynProvider__is_active_func davxs_davxs_cb_Apache__DAV__DynProvider__is_active_func [4] = {
davxs_cb_Apache__DAV__DynProvider__is_active_obj0,
davxs_cb_Apache__DAV__DynProvider__is_active_obj1,
davxs_cb_Apache__DAV__DynProvider__is_active_obj2,
davxs_cb_Apache__DAV__DynProvider__is_active_obj3
} ;
MODULE = Apache::DAV::DynProvider PACKAGE = Apache::DAV::DynProvider
int
id(obj, val=0)
Apache::DAV::DynProvider obj
int val
PREINIT:
/*nada*/
CODE:
RETVAL = (int) obj->id;
if (items > 1) {
obj->id = (int) val;
}
OUTPUT:
RETVAL
MODULE = Apache::DAV::DynProvider PACKAGE = Apache::DAV::DynProvider
int
type(obj, val=0)
Apache::DAV::DynProvider obj
int val
PREINIT:
/*nada*/
CODE:
RETVAL = (int) obj->type;
if (items > 1) {
obj->type = (int) val;
}
OUTPUT:
RETVAL
MODULE = Apache::DAV::DynProvider PACKAGE = Apache::DAV::DynProvider
const void *
hooks(obj, val=NULL)
Apache::DAV::DynProvider obj
const void * val
PREINIT:
/*nada*/
CODE:
RETVAL = (const void *) obj->hooks;
if (items > 1) {
obj->hooks = (const void *) val;
}
OUTPUT:
RETVAL
MODULE = Apache::DAV::DynProvider PACKAGE = Apache::DAV::DynProvider
int
is_active(__self, ctx, id)
Apache::DAV::DynProvider __self
Apache::DAV::DynContext ctx
int id
CODE:
RETVAL = (*__self->is_active)(ctx, id);
OUTPUT:
RETVAL
MODULE = Apache::DAV::DynProvider PACKAGE = Apache::DAV::DynProvider
SV *
new (class,initializer=NULL)
char * class
SV * initializer
PREINIT:
SV * svobj ;
Apache__DAV__DynProvider cobj ;
SV * tmpsv ;
CODE:
davxs_Apache__DAV__DynProvider_create_obj(cobj,svobj,RETVAL,malloc(sizeof(*cobj))) ;
if (initializer) {
if (!SvROK(initializer) || !(tmpsv = SvRV(initializer)))
croak ("initializer for Apache::DAV::DynProvider::new is not a reference") ;
if (SvTYPE(tmpsv) == SVt_PVHV || SvTYPE(tmpsv) == SVt_PVMG)
Apache__DAV__DynProvider_new_init (aTHX_ cobj, tmpsv, 0) ;
else if (SvTYPE(tmpsv) == SVt_PVAV) {
int i ;
SvGROW(svobj, sizeof (*cobj) * av_len((AV *)tmpsv)) ;
for (i = 0; i <= av_len((AV *)tmpsv); i++) {
SV * * itemrv = av_fetch((AV *)tmpsv, i, 0) ;
SV * item ;
if (!itemrv || !*itemrv || !SvROK(*itemrv) || !(item = SvRV(*itemrv)))
croak ("array element of initializer for Apache::DAV::DynProvider::new is not a reference") ;
Apache__DAV__DynProvider_new_init (aTHX_ &cobj[i], item, 1) ;
}
}
else {
croak ("initializer for Apache::DAV::DynProvider::new is not a hash/array/object reference") ;
}
}
OUTPUT:
RETVAL
MODULE = Apache::DAV::DynProvider PACKAGE = Apache::DAV::DynProvider
void
init_callbacks (obj)
SV * obj
PREINIT:
int n = -1 ;
int i ;
Apache__DAV__DynProvider cobj = (Apache__DAV__DynProvider)davxs_sv2_Apache__DAV__DynProvider(obj) ;
SV * ref ;
SV * perl_obj ;
CODE:
perl_obj = SvRV(obj) ;
ref = newRV_noinc(perl_obj) ;
for (i=0;i < 4;i++)
{
if (davxs_Apache__DAV__DynProvider_obj[i] == ref)
{
n = i ;
break ;
}
}
if (n < 0)
for (i=0;i < 4;i++)
{
if (davxs_Apache__DAV__DynProvider_obj[i] == NULL)
{
n = i ;
break ;
}
}
if (n < 0)
croak ("Limit for concurrent object callbacks reached for Apache::DAV::DynProvider. Limit is 4") ;
davxs_Apache__DAV__DynProvider_obj[n] = ref ;
cobj -> is_active = davxs_davxs_cb_Apache__DAV__DynProvider__is_active_func[n] ;
PROTOTYPES: disabled
BOOT:
items = items; /* -Wall */
( run in 1.299 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )