示例#1
0
static as_record * as_record_defaults(as_record * rec, bool free, uint16_t nbins) 
{
	as_rec * r = &rec->_;
	as_val_init(&r->_, AS_REC, free);
	r->data = rec;
	r->hooks = &as_record_rec_hooks;

	rec->key._free = false;
	rec->key.ns[0] = '\0';
	rec->key.set[0] = '\0';
	rec->key.valuep = NULL;

	rec->key.digest.init = false;
	memset(rec->key.digest.value, 0, AS_DIGEST_VALUE_SIZE);

	rec->gen = 0;
	rec->ttl = 0;

	if ( nbins > 0 ) {
		rec->bins._free = true;
		rec->bins.capacity = nbins;
		rec->bins.size = 0;
		rec->bins.entries = (as_bin *) malloc(sizeof(as_bin) * nbins);
	}
	else {
		rec->bins._free = false;
		rec->bins.capacity = 0;
		rec->bins.size = 0;
		rec->bins.entries = NULL;
	}

	return rec;
}
示例#2
0
as_pair * as_pair_init(as_pair * pair, as_val * _1, as_val * _2)
{
	if ( !pair ) return pair;

	as_val_init((as_val *) pair, AS_PAIR, false);
	pair->_1 = _1;
	pair->_2 = _2;
	return pair;
}
示例#3
0
as_pair * as_pair_new(as_val * _1, as_val * _2)
{
	as_pair * pair = (as_pair *) cf_malloc(sizeof(as_pair));
	if ( !pair ) return pair;

	as_val_init((as_val *) pair, AS_PAIR, true);
	pair->_1 = _1;
	pair->_2 = _2;
	return pair;
}