本文整理汇总了C++中BBPkeepref函数的典型用法代码示例。如果您正苦于以下问题:C++ BBPkeepref函数的具体用法?C++ BBPkeepref怎么用?C++ BBPkeepref使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了BBPkeepref函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DCsliceStrict
str
DCsliceStrict(int *ret, bat *bid, lng *start, lng *end)
{
BAT *b, *bn = NULL;
if ((b = BATdescriptor(*bid)) == NULL) {
throw(MAL, "dcoperator.sliceStrict", "Cannot access descriptor");
}
assert(*start >= 0);
assert(*end >= 0);
assert(*start <= (lng) BUN_MAX);
assert(*end < (lng) BUN_MAX);
assert(*start <= *end);
if ((BUN) ((*end - *start) + 1) > BATcount(b)) {
bn = BATnew(b->htype, b->ttype, 0);
BATsetcount(bn, 0);
*ret = bn->batCacheid;
BBPkeepref(*ret);
return MAL_SUCCEED;
}
bn = BATslice(b, (BUN) *start, (BUN) *end + 1);
BBPreleaseref(b->batCacheid);
if (bn != NULL) {
if (!(bn->batDirty & 2))
bn = BATsetaccess(bn, BAT_READ);
*ret = bn->batCacheid;
BBPkeepref(*ret);
return MAL_SUCCEED;
}
throw(MAL, "dcoperator.sliceStrict", "GDKerror");
}
示例2: MATpackIncrement
/*
* Enable incremental packing. The SQL front-end requires
* fixed oid sequences.
*/
str
MATpackIncrement(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p)
{
bat *ret = getArgReference_bat(stk,p,0);
int pieces;
BAT *b, *bb, *bn;
size_t newsize;
(void) cntxt;
b = BATdescriptor( stk->stk[getArg(p,1)].val.ival);
if ( b == NULL)
throw(MAL, "mat.pack", RUNTIME_OBJECT_MISSING);
if ( getArgType(mb,p,2) == TYPE_int){
/* first step, estimate with some slack */
pieces = stk->stk[getArg(p,2)].val.ival;
bn = BATnew(TYPE_void, b->ttype?b->ttype:TYPE_oid, (BUN)(1.2 * BATcount(b) * pieces), TRANSIENT);
if (bn == NULL)
throw(MAL, "mat.pack", MAL_MALLOC_FAIL);
/* allocate enough space for the vheap, but not for strings,
* since BATappend does clever things for strings */
if ( b->T->vheap && bn->T->vheap && ATOMstorage(b->ttype) != TYPE_str){
newsize = b->T->vheap->size * pieces;
if (HEAPextend(bn->T->vheap, newsize, TRUE) != GDK_SUCCEED)
throw(MAL, "mat.pack", MAL_MALLOC_FAIL);
}
BATseqbase(bn, b->H->seq);
BATseqbase(BATmirror(bn), b->T->seq);
BATappend(bn,b,FALSE);
assert(!bn->H->nil || !bn->H->nonil);
assert(!bn->T->nil || !bn->T->nonil);
bn->H->align = (pieces-1);
BBPkeepref(*ret = bn->batCacheid);
BBPunfix(b->batCacheid);
} else {
/* remaining steps */
bb = BATdescriptor(stk->stk[getArg(p,2)].val.ival);
if ( bb ){
if (BATcount(b) == 0)
BATseqbase(b, bb->H->seq);
if (BATcount(b) == 0)
BATseqbase(BATmirror(b), bb->T->seq);
BATappend(b,bb,FALSE);
}
b->H->align--;
if(b->H->align == 0)
BATsetaccess(b, BAT_READ);
assert(!b->H->nil || !b->H->nonil);
assert(!b->T->nil || !b->T->nonil);
BBPkeepref(*ret = b->batCacheid);
if( bb)
BBPunfix(bb->batCacheid);
}
return MAL_SUCCEED;
}
示例3: ITRnextChunk
/*
* The nextChunk version advances the reader,
* which also means that the view descriptor is already available.
* The granule size may differ in each call.
*/
str
ITRnextChunk(lng *res, int *vid, int *bid, lng *granule)
{
BAT *b, *view;
BUN i;
if ((b = BATdescriptor(*bid)) == NULL) {
throw(MAL, "iterator.nextChunk", INTERNAL_BAT_ACCESS);
}
if ((view = BATdescriptor(*vid)) == NULL) {
BBPunfix(b->batCacheid);
throw(MAL, "iterator.nextChunk", INTERNAL_BAT_ACCESS);
}
i = (BUN) (*res + BATcount(view));
if (i >= BUNlast(b)) {
*res = lng_nil;
*vid = 0;
BBPunfix(view->batCacheid);
BBPunfix(b->batCacheid);
return MAL_SUCCEED;
}
/* printf("set bat chunk bound to " BUNFMT " - " BUNFMT " \n",
i, i+(BUN) *granule-1); */
VIEWbounds(b, view, i, i + (BUN) * granule);
BATseqbase(view, b->hseqbase == oid_nil ? oid_nil : b->hseqbase + i - BUNfirst(b));
BBPkeepref(*vid = view->batCacheid);
BBPunfix(b->batCacheid);
*res = i;
return MAL_SUCCEED;
}
示例4: AGGRsubmin_val
str
AGGRsubmin_val(bat *retval, bat *bid, bat *gid, bat *eid, bit *skip_nils)
{
BAT *a, *b, *r;
str res;
bat ret;
if ((res = AGGRsubgrouped(&ret, NULL, bid, gid, eid, NULL, *skip_nils,
0, TYPE_oid, BATgroupmin, NULL, "aggr.submin")) != MAL_SUCCEED)
return res;
b = BATdescriptor(*bid);
if( b == NULL)
throw(MAL,"aggr.submax", INTERNAL_BAT_ACCESS);
a = BATdescriptor(ret);
if( a == NULL){
BBPreleaseref(b->batCacheid);
throw(MAL,"aggr.submax", INTERNAL_BAT_ACCESS);
}
r = BATproject(a, b);
BBPreleaseref(b->batCacheid);
BBPreleaseref(a->batCacheid);
BBPdecref(ret, TRUE);
BBPkeepref(*retval = r->batCacheid);
return MAL_SUCCEED;
}
示例5: CMDbatUNARY1
static str
CMDbatUNARY1(MalStkPtr stk, InstrPtr pci, int abort_on_error,
BAT *(*batfunc)(BAT *, BAT *, int), const char *malfunc)
{
bat *bid;
BAT *bn, *b, *s = NULL;
bid = getArgReference_bat(stk, pci, 1);
if ((b = BATdescriptor(*bid)) == NULL)
throw(MAL, malfunc, SQLSTATE(HY002) RUNTIME_OBJECT_MISSING);
if (pci->argc == 3) {
bat *sid = getArgReference_bat(stk, pci, 2);
if (*sid && (s = BATdescriptor(*sid)) == NULL) {
BBPunfix(b->batCacheid);
throw(MAL, malfunc, SQLSTATE(HY002) RUNTIME_OBJECT_MISSING);
}
}
bn = (*batfunc)(b, s, abort_on_error);
BBPunfix(b->batCacheid);
if (s)
BBPunfix(s->batCacheid);
if (bn == NULL) {
return mythrow(MAL, malfunc, OPERATION_FAILED);
}
bid = getArgReference_bat(stk, pci, 0);
BBPkeepref(*bid = bn->batCacheid);
return MAL_SUCCEED;
}
示例6: BKCsetAccess
str
BKCsetAccess(bat *res, const bat *bid, const char * const *param)
{
BAT *b;
int m;
if ((b = BATdescriptor(*bid)) == NULL)
throw(MAL, "bat.setAccess", RUNTIME_OBJECT_MISSING);
switch (*param[0]) {
case 'r':
m = BAT_READ;
break;
case 'a':
m = BAT_APPEND;
break;
case 'w':
m = BAT_WRITE;
break;
default:
*res = 0;
throw(MAL, "bat.setAccess", ILLEGAL_ARGUMENT " Got %c" " expected 'r','a', or 'w'", *param[0]);
}
if ((b = setaccess(b, m)) == NULL)
throw(MAL, "bat.setAccess", OPERATION_FAILED);
BBPkeepref(*res = b->batCacheid);
return MAL_SUCCEED;
}
示例7: CMDconvertbat
static str
CMDconvertbat(MalStkPtr stk, InstrPtr pci, int tp, int abort_on_error)
{
bat *bid;
BAT *b, *bn, *s = NULL;
bid = getArgReference_bat(stk, pci, 1);
if ((b = BATdescriptor(*bid)) == NULL)
throw(MAL, "batcalc.convert", SQLSTATE(HY002) RUNTIME_OBJECT_MISSING);
if (pci->argc == 3) {
bat *sid = getArgReference_bat(stk, pci, 2);
if (*sid && (s = BATdescriptor(*sid)) == NULL) {
BBPunfix(b->batCacheid);
throw(MAL, "batcalc.convert", SQLSTATE(HY002) RUNTIME_OBJECT_MISSING);
}
}
bn = BATconvert(b, s, tp, abort_on_error);
BBPunfix(b->batCacheid);
if (s)
BBPunfix(s->batCacheid);
if (bn == NULL) {
char buf[20];
snprintf(buf, sizeof(buf), "batcalc.%s", ATOMname(tp));
return mythrow(MAL, buf, OPERATION_FAILED);
}
bid = getArgReference_bat(stk, pci, 0);
BBPkeepref(*bid = bn->batCacheid);
return MAL_SUCCEED;
}
示例8: AGGRsubmaxcand_val
str
AGGRsubmaxcand_val(bat *retval, bat *bid, bat *gid, bat *eid, bat *sid, bit *skip_nils)
{
BAT *a, *b, *r;
str res;
bat ret;
if ((res = AGGRsubgrouped(&ret, NULL, bid, gid, eid, sid, *skip_nils,
0, TYPE_oid, BATgroupmax, NULL, "aggr.submax")) != MAL_SUCCEED)
return res;
b = BATdescriptor(*bid);
if ( b == NULL)
throw(MAL,"aggr.max",RUNTIME_OBJECT_MISSING);
a = BATdescriptor(ret);
if ( a == NULL){
BBPreleaseref(b->batCacheid);
throw(MAL,"aggr.max",RUNTIME_OBJECT_MISSING);
}
r = BATproject(a, b);
BBPreleaseref(b->batCacheid);
BBPreleaseref(a->batCacheid);
BBPdecref(ret, TRUE);
BBPkeepref(*retval = r->batCacheid);
return MAL_SUCCEED;
}
示例9: JSONvalueTable
str
JSONvalueTable(bat *ret, json *js)
{
BAT *bn;
char *r;
int i;
JSON *jt;
jt = JSONparse(*js, FALSE); // already validated
CHECK_JSON(jt);
bn = BATnew(TYPE_void, TYPE_json, 64, TRANSIENT);
if (bn == NULL)
throw(MAL, "json.values", MAL_MALLOC_FAIL);
BATseqbase(bn, 0);
bn->hsorted = 1;
bn->hrevsorted = 0;
bn->H->nonil = 1;
bn->tsorted = 1;
bn->trevsorted = 0;
bn->T->nonil = 1;
for (i = jt->elm[0].next; i; i = jt->elm[i].next) {
if (jt->elm[i].kind == JSON_ELEMENT)
r = JSONgetValue(jt, jt->elm[i].child);
else
r = JSONgetValue(jt, i);
BUNappend(bn, r, FALSE);
GDKfree(r);
}
BBPkeepref(*ret = bn->batCacheid);
return MAL_SUCCEED;
}
示例10: MseedLoadSQL
str
MseedLoadSQL(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
int *ret = (int*) getArgReference(stk,pci,0);
str *targetfile = (str*) getArgReference(stk,pci,1);
str msg = MAL_SUCCEED;
BAT *btime, *bdata, *table;
(void) cntxt;
(void) mb;
/* XXX: BATs of BATs are no longer allowed and this code hasn't worked
* for quite some time anyway */
table = BATnew(TYPE_str,TYPE_bat,0);
if ( table == NULL)
throw(MAL, "mseed.load", MAL_MALLOC_FAIL);
msg = MseedLoadIntern(&btime, &bdata, *targetfile);
if ( msg == MAL_SUCCEED){
BUNins(table, (ptr)"time", (ptr)&btime->batCacheid, FALSE);
BUNins(table, (ptr)"data", (ptr)&bdata->batCacheid, FALSE);
BBPreleaseref(btime->batCacheid);
BBPreleaseref(bdata->batCacheid);
BBPkeepref(*ret= table->batCacheid);
}
return msg;
}
示例11: MATpackValues
str
MATpackValues(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p)
{
int i,*ret, type, first = 1;
BAT *bn;
(void) cntxt;
type = getArgType(mb,p,first);
bn = BATnew(TYPE_void, type, p->argc, TRANSIENT);
if( bn == NULL)
throw(MAL, "mat.pack", MAL_MALLOC_FAIL);
if (ATOMvarsized(type)) {
for(i = first; i < p->argc; i++)
BUNappend(bn, stk->stk[getArg(p,i)].val.sval, TRUE);
} else {
for(i = first; i < p->argc; i++)
BUNappend(bn, getArgReference(stk, p, i), TRUE);
}
BATsettrivprop(bn);
BATderiveProps(bn,FALSE);
ret= (int*) getArgReference(stk,p,0);
BBPkeepref(*ret = bn->batCacheid);
return MAL_SUCCEED;
}
示例12: BKCbat_inplace_force
str
BKCbat_inplace_force(bat *r, const bat *bid, const bat *rid, const bat *uid, const bit *force)
{
BAT *b, *p, *u;
if ((b = BATdescriptor(*bid)) == NULL)
throw(MAL, "bat.inplace", RUNTIME_OBJECT_MISSING);
if ((p = BATdescriptor(*rid)) == NULL) {
BBPunfix(b->batCacheid);
throw(MAL, "bat.inplace", RUNTIME_OBJECT_MISSING);
}
if ((u = BATdescriptor(*uid)) == NULL) {
BBPunfix(b->batCacheid);
BBPunfix(p->batCacheid);
throw(MAL, "bat.inplace", RUNTIME_OBJECT_MISSING);
}
if (void_replace_bat(b, p, u, *force) == BUN_NONE) {
BBPunfix(b->batCacheid);
BBPunfix(p->batCacheid);
BBPunfix(u->batCacheid);
throw(MAL, "bat.inplace", GDK_EXCEPTION);
}
BBPkeepref(*r = b->batCacheid);
BBPunfix(p->batCacheid);
BBPunfix(u->batCacheid);
return MAL_SUCCEED;
}
示例13: BKCappend_force_wrap
char *
BKCappend_force_wrap(bat *r, const bat *bid, const bat *uid, const bit *force)
{
BAT *b, *u;
gdk_return ret;
if ((b = BATdescriptor(*bid)) == NULL)
throw(MAL, "bat.append", RUNTIME_OBJECT_MISSING);
if ((u = BATdescriptor(*uid)) == NULL) {
BBPunfix(b->batCacheid);
throw(MAL, "bat.append", RUNTIME_OBJECT_MISSING);
}
if (BATcount(u) == 0) {
ret = GDK_SUCCEED;
} else {
if ((b = setaccess(b, BAT_WRITE)) == NULL)
throw(MAL, "bat.append", OPERATION_FAILED);
ret = BATappend(b, u, *force);
}
BBPunfix(u->batCacheid);
if (ret != GDK_SUCCEED) {
BBPunfix(b->batCacheid);
throw(MAL, "bat.append", GDK_EXCEPTION);
}
if( b->batPersistence == PERSISTENT)
BATmsync(b);
BBPkeepref(*r = b->batCacheid);
return MAL_SUCCEED;
}
示例14: BKCdelete_bat_bun
str
BKCdelete_bat_bun(bat *r, const bat *bid, const bat *sid)
{
BAT *b, *s;
gdk_return ret;
if (*bid == *sid)
return BKCdelete_all(r, bid);
if ((b = BATdescriptor(*bid)) == NULL)
throw(MAL, "bat.delete", RUNTIME_OBJECT_MISSING);
if ((s = BATdescriptor(*sid)) == NULL) {
BBPunfix(b->batCacheid);
throw(MAL, "bat.delete", RUNTIME_OBJECT_MISSING);
}
ret = BATdel(b, s, FALSE);
BBPunfix(s->batCacheid);
if (ret != GDK_SUCCEED) {
BBPunfix(b->batCacheid);
throw(MAL, "bat.delete_bat_bun", GDK_EXCEPTION);
}
if( b->batPersistence == PERSISTENT)
BATmsync(b);
BBPkeepref(*r = b->batCacheid);
return MAL_SUCCEED;
}
示例15: BKCmirror
str
BKCmirror(bat *ret, const bat *bid)
{
BAT *b, *bn;
if ((b = BATdescriptor(*bid)) == NULL) {
throw(MAL, "bat.mirror", RUNTIME_OBJECT_MISSING);
}
bn = VIEWcombine(b);
if (bn != NULL) {
if (b->batRestricted == BAT_WRITE) {
BAT *bn1;
bn1 = BATcopy(bn, bn->htype, bn->ttype, FALSE, TRANSIENT);
BBPreclaim(bn);
bn = bn1;
}
if (bn != NULL) {
*ret = bn->batCacheid;
BBPkeepref(*ret);
BBPunfix(b->batCacheid);
return MAL_SUCCEED;
}
}
*ret = 0;
BBPunfix(b->batCacheid);
throw(MAL, "bat.mirror", GDK_EXCEPTION);
}