本文整理汇总了C++中DB::key_range方法的典型用法代码示例。如果您正苦于以下问题:C++ DB::key_range方法的具体用法?C++ DB::key_range怎么用?C++ DB::key_range使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DB
的用法示例。
在下文中一共展示了DB::key_range方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: key_range
int Db::key_range(DbTxn *txnid, Dbt *key,
DB_KEY_RANGE *results, u_int32_t flags)
{
DB *db = unwrap(this);
int err;
if ((err = db->key_range(db, unwrap(txnid), key,
results, flags)) != 0) {
DB_ERROR("Db::key_range", err, error_policy());
return (err);
}
return (0);
}
示例2: rberkeley_db_key_range
/* {{{ rberkeley_db_key_range */
SEXP rberkeley_db_key_range (SEXP _dbp, SEXP _txnid, SEXP _key, SEXP _flags)
{
DB *dbp;
DB_TXN *txnid;
DBT key;
DB_KEY_RANGE key_range;
u_int32_t flags = (u_int32_t)INTEGER(_flags)[0];
int ret;
if(!isNull(_txnid)) {
txnid = R_ExternalPtrAddr(_txnid);
} else txnid = NULL;
memset(&key, 0, sizeof(DBT));
if(isNull(_key))
error("key must be set");
key.data = (unsigned char *)RAW(_key);
key.size = length(_key);
dbp = R_ExternalPtrAddr(_dbp);
if(R_ExternalPtrTag(_dbp) != RBerkeley_DB || dbp == NULL)
error("invalid 'db' handle");
ret = dbp->key_range(dbp, txnid, &key, &key_range, flags);
if(ret != 0)
return ScalarInteger(ret);
SEXP KeyRange, names;
PROTECT(KeyRange = allocVector(VECSXP, 3));
SET_VECTOR_ELT(KeyRange, 0, ScalarReal(key_range.less));
SET_VECTOR_ELT(KeyRange, 1, ScalarReal(key_range.equal));
SET_VECTOR_ELT(KeyRange, 2, ScalarReal(key_range.greater));
PROTECT(names = allocVector(STRSXP, 3));
SET_STRING_ELT(names, 0, mkChar("less"));
SET_STRING_ELT(names, 1, mkChar("equal"));
SET_STRING_ELT(names, 2, mkChar("greater"));
setAttrib(KeyRange, R_NamesSymbol, names);
UNPROTECT(2);
return KeyRange;
}