Couchbase-Client
view release on metacpan or search on metacpan
src/Makefile.PL view on Meta::CPAN
#!/usr/bin/perl
package PLCBCDeps;
use strict;
use warnings;
use ExtUtils::MakeMaker;
use Dir::Self;
use Devel::CheckLib;
use Dir::Self;
use Data::Dumper;
use File::Spec;
use Dir::Self;
xs/Client_multi.xs view on Meta::CPAN
AV *argav;
SV **tmpsv;
time_t exp = 0;
int64_t delta = 1;
uint64_t initial = 0;
int do_create = 0;
#define _do_arith_simple(only_sv) \
plcb_get_str_or_die(only_sv, syncs[i].key, syncs[i].nkey, "key"); \
delta = (cmd == MULTI_CMD_DECR) ? (-delta) : delta; \
goto GT_CBC_CMD;
_fetch_assert(tmpsv, args, i, "empty argument in spec");
if(SvTYPE(*tmpsv) == SVt_PV) {
/*simple key*/
if(cmd == MULTI_CMD_ARITHMETIC) {
die("Expected array reference!");
}
_do_arith_simple(*tmpsv);
xs/Client_multi.xs view on Meta::CPAN
_do_arith_simple(*tmpsv);
} else {
plcb_get_str_or_die(*tmpsv, syncs[i].key, syncs[i].nkey, "key");
}
_fetch_assert(tmpsv, argav, 1, "expected delta");
delta = SvIV(*tmpsv);
delta = (cmd == MULTI_CMD_DECR) ? (-delta) : delta;
if(cmd != MULTI_CMD_ARITHMETIC) {
goto GT_CBC_CMD;
}
/*fetch initial value here*/
if( (tmpsv = av_fetch(argav, 2, 0)) && SvTYPE(*tmpsv) != SVt_NULL ) {
initial = SvUV(*tmpsv);
do_create = 1;
}
if ( (tmpsv = av_fetch(argav, 3, 0)) && (exp = SvUV(*tmpsv)) ) {
PLCB_UEXP2EXP(exp, exp, now);
}
GT_CBC_CMD:
_SYNC_RESULT_INIT(object, ret, syncs[i]);
err = libcouchbase_arithmetic(instance, &syncs[i], syncs[i].key,
syncs[i].nkey,
delta, exp, do_create, initial);
_MAYBE_SET_IMMEDIATE_ERROR(err, syncs[i].ret, nwait);
}
_MAYBE_WAIT(nwait);
( run in 1.088 second using v1.01-cache-2.11-cpan-e1769b4cff6 )