static void ldo_putref(ScarabSession * session, int reference, ScarabDatum * obj) { LDO_Session *s; ScarabDatum *ref; s = (LDO_Session *) session->encoder; ref = scarab_new_integer(reference); scarab_dict_put(s->refs, ref, obj); scarab_free_datum(ref); scarab_free_datum(obj); }
Datum VariableRegistry::generateCodecDatum() { ScarabDatum *codec = NULL; shared_ptr<Variable> var; boost::mutex::scoped_lock s_lock(lock); int dictSize = master_variable_list.size(); codec = scarab_dict_new(dictSize, &scarab_dict_times2); for(int i = 0; i < dictSize; i++) { var = master_variable_list[i]; if(var == NULL) { continue; } int codec_code = var->getCodecCode(); if(codec_code == RESERVED_CODEC_CODE) { continue; } VariableProperties *props = var->getProperties(); if(props == NULL){ continue; } Datum serialized_var(props->operator Datum()); if(serialized_var.isUndefined()) { mdebug("local parameter null value at param (%d)", i); } ScarabDatum *codec_key = scarab_new_integer(codec_code); scarab_dict_put(codec, codec_key, serialized_var.getScarabDatum()); scarab_free_datum(codec_key); } Datum returnCodec(codec); scarab_free_datum(codec); return returnCodec; }
static ScarabDatum * ldo_read_dict(ScarabSession * session) { int len; ScarabDatum *dict; len = ldo_readber(session); dict = scarab_dict_new(len, scarab_dict_times2); for (; len > 0; len--) { ScarabDatum *key = ldo_read(session); ScarabDatum *value = ldo_read(session); scarab_dict_put(dict, key, value); scarab_free_datum(key); scarab_free_datum(value); } return dict; }