Exemplo n.º 1
0
 NMGenerator::Type type(const nvar& v){
   switch(v.type()){
     case nvar::Function:{
       NMGenerator::Type t = NMGenerator::type(v);
       
       if(!(t & NMGenerator::Supported) || t == NMGenerator::Requested){
         return t;
       }
       
       size_t size = v.size();
       for(size_t i = 0; i < size; ++i){
         NMGenerator::Type ti = type(v[i]);
         
         if(!(ti & NMGenerator::Supported)){
           return ti;
         }
         else if(ti == NMGenerator::Requested){
           t = ti;
         }
       }
       
       return t;
     }
     case nvar::Symbol:
       return o_->Get(v).isNone() ?
       NMGenerator::Requested : NMGenerator::Supported;
   }
   
   return NMGenerator::Supported;
 }