bool client_snapshot(int from_gid, int from_tid, int to, int sid, const char *msg) { if (message_filter != -1 && message_filter != to) return true; Tokenizer t; t.parse(msg); const char *ssnaptype = "Unknown snaptype"; switch (sid) { case SnapGameState: ssnaptype = "SnapGameState"; break; case SnapTable: ssnaptype = "SnapTable"; break; case SnapCards: ssnaptype = "SnapCards"; break; case SnapWinPot: ssnaptype = "SnapWinPot"; break; case SnapOddChips: ssnaptype = "SnapOddChips"; break; case SnapPlayerAction: ssnaptype = "SnapPlayerAction"; break; case SnapPlayerShow: ssnaptype = "SnapPlayerShow"; break; } if (sid == SnapWinPot) { int cid, pot, amount; t >> cid >> pot >> amount; log_msg(ssnaptype, "cid=%d pot=%d amount=%d", cid, pot, amount); }
ErrorCode TbbProcessor::MatchDocument(DocID doc_id, const char* doc_str) { uint64_t len=strlen(doc_str); std::shared_ptr<char> str(reinterpret_cast<char*>(operator new(len+1))); memcpy(str.get(),doc_str,len+1); matchingTg.run([&,str,len,doc_id,this]() { Tokenizer tokenizer; tokenizer.parse(str.get(),len); std::vector<uint32_t> edQueries,hammingIds,exactQueries; tbb::task_group tg; tg.run([&,this](){ exactQueries=indexes.exactIndex.matchDocument(tokenizer); }); tg.run([&,this](){ hammingIds=indexes.hammingIndex.matchDocument(tokenizer); }); tg.run([&,this](){ edQueries=indexes.edIndex.matchDocument(tokenizer); }); tg.wait(); std::vector<QueryID> query_ids; query_ids.reserve(exactQueries.size()+hammingIds.size()+edQueries.size()); query_ids.insert(query_ids.end(),edQueries.begin(),edQueries.end()); query_ids.insert(query_ids.end(),hammingIds.begin(),hammingIds.end()); query_ids.insert(query_ids.end(),exactQueries.begin(),exactQueries.end()); docs.push(Document(doc_id,query_ids)); }); return EC_SUCCESS; }
TEST_F(MatcherTests,MassiveAdd) { EditDistance a; for (uint64_t index=0;index<1000000;++index) a.addQuery(index,random()%3,randomWordVector()); std::string s=randomString(1000000); Tokenizer t; t.parse(s.c_str(),s.length()); a.matchDocument(t); }
int main(void){ Tokenizer* token = new Tokenizer(); Result* r = token->parse("1 + 2 + 3"); // 6 * 2 -> 12 -> 19 //r->calc(); //cout << ((3 * 2) * 2 + (1 + 6)) * 15 / (2 + 1) << endl; //cout << r->debug() << endl; //cout << r->calc() << endl; system("pause"); return 0; }
bool ConfigParser::load(const char *filename) { filetype *fp; fp = file_open(filename, mode_read); if (!fp) return false; char buffer[1024]; // parse each line in config-file while (file_readline(fp, buffer, sizeof(buffer))) { Tokenizer t; t.parse(buffer); // skip blank lines if (!t.count()) continue; string varname = t.getNext(); // skip comments if (varname[0] == '#') continue; string value = t.getTillEnd(); vars[varname] = value; } file_close(fp); return true; }