コード例 #1
0
ファイル: prot.cpp プロジェクト: skifcorp/amigo
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);
    }
  }
}