Esempio n. 1
0
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);
}
Esempio n. 2
0
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;  
}
Esempio n. 3
0
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;
}