TYPEMAP
PLCB_XS_OBJPAIR_t	T_PLCB_XS_OBJPAIR_T
PLCB_XS_STRING_NONULL_t	T_PLCB_XS_STRING_NONULL_T
PLCB_XS_STRING_t	T_PLCB_XS_STRING_T
PLCB_couch_handle_t *	T_PLCB_COUCH_HANDLE_T 
PLCB_jsondec_t*	T_PLCB_JSONDEC_T
PLCB_iter_t *	T_PLCB_ITER_T 
PLCB_exp_t		T_PLCB_EXP_T

INPUT
T_PLCB_XS_OBJPAIR_T
	if (! (SvROK($arg) && SvOBJECT(SvRV($arg)) && SvIOK(SvRV($arg)))) {
	    die(\"Not a valid Couchbase::Client\");
	}
	
	$var.sv = $arg;
	$var.ptr = NUM2PTR(PLCB_t*, SvIV(SvRV($arg)));


T_PLCB_XS_STRING_NONULL_T
	if(!SvPOK($arg)) {
	    $var.base = NULL;
	    $var.len = 0;
	} else {
	    $var.base = SvPV($arg, $var.len);
	}
	$var.origsv = $arg;
	if($var.len == 0) {
	    die(\"$var cannot be empty\");
	}


T_PLCB_XS_STRING_T
	if(!SvPOK($arg)) {
	    $var.base = NULL;
	    $var.len = 0;
	} else {
	    $var.base = SvPV($arg, $var.len);
	}
	$var.origsv = $arg;


T_PLCB_COUCH_HANDLE_T 
	if (! (SvROK($arg) && SvOBJECT(SvRV($arg)) && SvIOK(SvRV($arg)))) {
	    die(\"Not a valid Couchbase::Couch::RequestHandle\");
	}
	
	$var = NUM2PTR(PLCB_couch_handle_t *, SvIV(SvRV($arg)));


T_PLCB_JSONDEC_T
	$var = (PLCB_jsondec_t*)SvPVX(SvRV($arg));

T_PLCB_ITER_T 
	if (! (SvROK($arg) && SvOBJECT(SvRV($arg)) && SvIOK(SvRV($arg)))) {
	    die(\"Not a valid Couchbase::Client::Iterator\");
	}
	
	$var = NUM2PTR(PLCB_iter_t*, SvIV(SvRV($arg)));

T_PLCB_EXP_T
	$var = plcb_exp_from_sv($arg); 
