char HFltAttributeEntry::save(float * src) { if(!hasNamedAttr(".def_val")) addFloatAttr(".def_val"); writeFloatAttr(".def_val", src); return HAttributeEntry::save(); }
char HFlt3AttributeEntry::save(const Vector3F * src) { if(!hasNamedAttr(".def_val")) addFloatAttr(".def_val", 3); writeFloatAttr(".def_val", (float *)src); return HAttributeEntry::save(); }
char HAdaptiveField::save(AdaptiveField * fld) { int nc = fld->numCells(); std::cout<<"\n hadaptivefield save n cells "<<nc; if(!hasNamedAttr(".ncells")) addIntAttr(".ncells"); writeIntAttr(".ncells", &nc); if(!hasNamedAttr(".origin_span")) addFloatAttr(".origin_span", 4); float originSpan[4]; originSpan[0] = fld->origin().x; originSpan[1] = fld->origin().y; originSpan[2] = fld->origin().z; originSpan[3] = fld->span(); writeFloatAttr(".origin_span", originSpan); if(!hasNamedAttr(".max_level")) addIntAttr(".max_level"); int ml = fld->maxLevel(); writeIntAttr(".max_level", &ml); BaseBuffer dhash; dhash.create(nc * 16); IOCellHash * dst = (IOCellHash *)dhash.data(); sdb::CellHash * c = fld->cells(); c->begin(); while(!c->end()) { dst->code = c->key(); dst->level = c->value()->level; dst->visited = c->value()->visited; dst->index = c->value()->index; dst++; c->next(); } if(!hasNamedData(".cellHash")) addCharData(".cellHash", nc*16); writeCharData(".cellHash", nc*16, dhash.data()); return HField::save(fld); }
void HAttributeGroup::writeNumericValueAsFlt(ANumericAttribute * data) { float va; double vb; switch (data->numericType()) { case ANumericAttribute::TFloatNumeric: va = (static_cast<AFloatNumericAttribute *> (data))->value(); break; case ANumericAttribute::TDoubleNumeric: vb = (static_cast<ADoubleNumericAttribute *> (data))->value(); va = vb; break; default: break; } if(!hasNamedAttr(".val")) addFloatAttr(".val"); writeFloatAttr(".val", &va); // std::cout<<" value "<<va; }