Esempio n. 1
0
char HField::save(AField * fld) 
{
	if(fld->numChannels() < 1) {
		std::cout<<"\n field has no channel";
		return 0;
	}
	
	if(!hasNamedAttr(".fieldType"))
		addIntAttr(".fieldType");
		
	int t = fld->fieldType();
	writeIntAttr(".fieldType", &t);
	
    std::vector<std::string > names;
    fld->getChannelNames(names);
    
	int nc = names.size();
    if(!hasNamedAttr(".fieldNumChannels"))
		addIntAttr(".fieldNumChannels");
	
	writeIntAttr(".fieldNumChannels", &nc);
	
	std::string combined = SHelper::Combine(names);
    
    if(!hasNamedAttr(".fieldChannelNames"))
		addStringAttr(".fieldChannelNames", combined.size());
		
	writeStringAttr(".fieldChannelNames", combined);
	
	std::vector<std::string >::const_iterator it = names.begin();
	for(; it!= names.end();++it) saveAChannel(*it, fld->namedChannel(*it));
	
    return 1;
}
Esempio n. 2
0
char HNumericBundle::save(const ABundleAttribute * d)
{
    if(!hasNamedAttr(".longname"))
		addStringAttr(".longname", d->longName().size());
	writeStringAttr(".longname", d->longName());
	
	int sz = d->size();
	if(!hasNamedAttr(".bundle_sz"))
		addIntAttr(".bundle_sz");
	writeIntAttr(".bundle_sz", &sz);
	
	int nt = d->numericType();
	if(!hasNamedAttr(".bundle_num_typ"))
		addIntAttr(".bundle_num_typ");

	writeIntAttr(".bundle_num_typ", &nt);
	
	int l = d->dataLength();
	if(!hasNamedData(".raw"))
	    addCharData(".raw", l);
		
	writeCharData(".raw", l, (char *)d->value());

    return 1;
}
Esempio n. 3
0
void HAttributeGroup::writeEnum(AEnumAttribute * data)
{
	short a, b;
	int v = data->value(a, b);
	if(!hasNamedAttr(".val"))
		addIntAttr(".val");
	writeIntAttr(".val", &v);
	
	int r[2];
	r[0] = a;
	r[1] = b;
	
	if(!hasNamedAttr(".range"))
		addIntAttr(".range", 2);
	writeIntAttr(".range", r);	
	
//  std::cout<<" value "<<v;
//  std::cout<<" range "<<a<<":"<<b;
	
	short i;
	std::stringstream sst;
	for(i=a; i<=b; i++) {
		std::string fn = data->fieldName(i);
		sst.str("");
		sst<<i;
		if(!hasNamedAttr(sst.str().c_str()))
			addStringAttr(sst.str().c_str(), fn.size());
		writeStringAttr(sst.str().c_str(), fn);
//      std::cout<<" field "<<i<<":"<<fn;
	}
}
Esempio n. 4
0
void HAttributeGroup::writeString(AStringAttribute * data)
{
	std::string v = data->value();
	if(!hasNamedAttr(".val"))
		addStringAttr(".val", v.size());
	writeStringAttr(".val", v);
	std::cout<<" value "<<v;
}
Esempio n. 5
0
char HAttributeGroup::save(AAttribute * data)
{
	if(!hasNamedAttr(".attr_typ"))
		addIntAttr(".attr_typ");
		
	int t = data->attrType();
	writeIntAttr(".attr_typ", &t);
	
//  std::cout<<"\nsave attr type "<<data->attrTypeStr();
	
	if(!hasNamedAttr(".longname"))
		addStringAttr(".longname", data->longName().size());
	writeStringAttr(".longname", data->longName());
		
//  std::cout<<"\nsave attr name "<<data->longName();
	
	if(data->isNumeric()) writeNumeric( static_cast<ANumericAttribute *> (data) );
	else if(data->isEnum()) writeEnum( static_cast<AEnumAttribute *> (data) );
	else if(data->isString()) writeString( static_cast<AStringAttribute *> (data) );
	else if(data->isCompound()) writeCompound( static_cast<ACompoundAttribute *> (data) );
	return 1; 
}