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; }
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; }
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; }