void onNewValue (Tag & t, const string& nam, const any& val, Variable::Pointer var) { if (nam == "value") { float fval = static_cast<float>(any_cast<value_t>(val)); var->appendValue( fval ); function<value_t(void)> elr; if (!t.lookup("scale_elr", elr) ) { cerr<<"cant find scale_elr in tag: "<<t.fullName()<<"\n"; elr = []{return 0.0f;}; } function<value_t(void)> ehr; if (!t.lookup("scale_ehr", ehr) ) { cerr<<"cant find scale_ehr in tag: "<<t.fullName()<<"\n"; ehr = []{return 100.0f;}; } var->checkScale( elr(), ehr() ); } else if (nam == "rel"){ short rel = any_cast<short>(val); if (rel == 1) { var->appendValue(NAN); } } }