ANode * windNode(Data & data) { std::cout << "Wind Node" << std::endl; Node<Wind> * tmpnode = new Node<Wind > (); tmpnode->AddChild(Strong, ID3(data.clean<WIND, Wind, Strong>())); tmpnode->AddChild(Weak, ID3(data.clean<WIND, Wind, Weak>())); return (tmpnode); }
ANode * humidityNode(Data & data) { std::cout << "Humidity Node" << std::endl; Node<Humidity> * tmpnode = new Node<Humidity > (); tmpnode->AddChild(High, ID3(data.clean<HUMIDITY, Humidity, High>())); tmpnode->AddChild(Normal, ID3(data.clean<HUMIDITY, Humidity, Normal>())); return (tmpnode); }
ANode * temperatureNode(Data & data) { std::cout << "Temperature Node" << std::endl; Node<Temperature> * tmpnode = new Node<Temperature > (); tmpnode->AddChild(Hot, ID3(data.clean<TEMPERATURE, Temperature, Hot>())); tmpnode->AddChild(Mild, ID3(data.clean<TEMPERATURE, Temperature, Mild>())); tmpnode->AddChild(Cool, ID3(data.clean<TEMPERATURE, Temperature, Cool>())); return (tmpnode); }
ANode * outlookNode(Data & data) { std::cout << "Outlook Node" << std::endl; Node<Outlook> * tmpnode = new Node<Outlook > (); tmpnode->AddChild(Sunny, ID3(data.clean<OUTLOOK, Outlook, Sunny>())); tmpnode->AddChild(Rain, ID3(data.clean<OUTLOOK, Outlook, Rain>())); tmpnode->AddChild(Overcast, ID3(data.clean<OUTLOOK, Outlook, Overcast>())); return (tmpnode); }
int main(int argc, char** argv) { Data * dat = new Data(); ANode * root = ID3(dat); std::cout << "Should I go play ? " << exemple(root, Rain, Cool, High, Strong ) << std::endl; freeTree(root); return 0; }
vmIntrinsics::ID vmIntrinsics::find_id_impl(vmSymbols::SID holder, vmSymbols::SID name, vmSymbols::SID sig, jshort flags) { assert((int)vmSymbols::SID_LIMIT <= (1<<vmSymbols::log2_SID_LIMIT), "must fit"); // Let the C compiler build the decision tree. #define VM_INTRINSIC_CASE(id, klass, name, sig, fcode) \ case ID3(SID_ENUM(klass), SID_ENUM(name), SID_ENUM(sig)): \ if (!match_##fcode(flags)) break; \ return id; switch (ID3(holder, name, sig)) { VM_INTRINSICS_DO(VM_INTRINSIC_CASE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE); } return vmIntrinsics::_none; #undef VM_INTRINSIC_CASE }
void CompoundTransliteratorTest::TestGetSetAdoptTransliterator(){ logln("Testing the getTransliterator() API of CompoundTransliterator"); UnicodeString ID("Latin-Greek;Greek-Latin;Latin-Devanagari;Devanagari-Latin;Latin-Cyrillic;Cyrillic-Latin;Any-Hex;Hex-Any"); UErrorCode status = U_ZERO_ERROR; UParseError parseError; CompoundTransliterator *ct1=new CompoundTransliterator(ID, parseError, status); if(U_FAILURE(status)){ dataerrln("CompoundTransliterator construction failed - %s", u_errorName(status)); return; } int32_t count=ct1->getCount(); UnicodeString *array=split(ID, 0x003b, count); int i; for(i=0; i < count; i++){ UnicodeString child= ct1->getTransliterator(i).getID(); if(child != *(array+i)){ errln("Error getTransliterator() failed: Expected->" + *(array+i) + " Got->" + child); }else { logln("OK: getTransliterator() passed: Expected->" + *(array+i) + " Got->" + child); } } delete []array; logln("Testing setTransliterator() API of CompoundTransliterator"); UnicodeString ID2("Hex-Any;Any-Hex;Latin-Cyrillic;Cyrillic-Latin;Halfwidth-Fullwidth;Fullwidth-Halfwidth"); array=split(ID2, 0x003b, count); Transliterator** transarray=new Transliterator*[count]; for(i=0;i<count;i++){ transarray[i]=Transliterator::createInstance(*(array+i), UTRANS_FORWARD, parseError, status); if(U_FAILURE(status)){ errln("Error could not create Transliterator with ID :"+*(array+i)); }else{ logln("The ID for the transltierator created is " + transarray[i]->getID()); } status = U_ZERO_ERROR; } /*setTransliterator and adoptTransliterator */ ct1->setTransliterators(transarray, count); if(ct1->getCount() != count || ct1->getID() != ID2){ errln((UnicodeString)"Error: setTransliterators() failed.\n\t Count:- expected->" + count + (UnicodeString)". got->" + ct1->getCount() + (UnicodeString)"\n\tID :- expected->" + ID2 + (UnicodeString)". got->" + ct1->getID()); } else{ logln("OK: setTransliterators() passed"); } /*UnicodeString temp; for(i=0;i<count-1;i++){ temp.append(ct1->getTransliterator(i).getID()); temp.append(";"); } temp.append(ct1->getTransliterator(i).getID()); if(temp != ID2){ errln("Error: setTransliterator() failed. Expected->" + ID2 + "\nGot->" + temp); } else{ logln("OK: setTransliterator() passed"); }*/ logln("Testing adoptTransliterator() API of CompoundTransliterator"); UnicodeString ID3("Latin-Katakana"); Transliterator **transarray2=(Transliterator **)uprv_malloc(sizeof(Transliterator*)*1); transarray2[0] = Transliterator::createInstance(ID3,UTRANS_FORWARD,parseError,status); if (transarray2[0] != 0) { ct1->adoptTransliterators(transarray2, 1); } if(ct1->getCount() != 1 || ct1->getID() != ID3){ errln((UnicodeString)"Error: adoptTransliterators() failed.\n\t Count:- expected->1" + (UnicodeString)". got->" + ct1->getCount() + (UnicodeString)"\n\tID :- expected->" + ID3 + (UnicodeString)". got->" + ct1->getID()); } else{ logln("OK: adoptTranslterator() passed"); } delete ct1; for(i=0;i<count;i++){ delete transarray[i]; } delete []transarray; delete []array; }