// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> RecordSequence* StreamBuffer::feed(const Record *rec) { if ( rec == NULL ) return NULL; _newStreamAdded = false; WaveformID wid(rec); RecordSequence *seq = sequence(wid); if ( seq == NULL ) { switch ( _mode ) { case TIME_WINDOW: seq = new TimeWindowBuffer(Core::TimeWindow(_timeStart, _timeStart + _timeSpan)); break; case RING_BUFFER: seq = new RingBuffer(_timeSpan); break; } _sequences[wid] = seq; _newStreamAdded = true; } if ( seq->feed(rec) ) return seq; return NULL; }
int rangeBitwiseAnd(int m, int n) { int wm = wid(m); int wn = wid(n); if(wn > wm) return 0; else{ int i = wn - 2; for(; i >= 0; i--){ int tm = m &(1<<i); int tn = n &(1<<i); if(tm != tn) break; } return m - m %(1<<(i+1)); } }
ValueType BandedScore <Src1SymbolType, Src2SymbolType, DestSymbolType, ValueType, AveType, GapType> ::eval (const Src1SymbolType* seq1, unsigned len1, const Src2SymbolType* seq2, unsigned len2, unsigned len, unsigned dev) { seq1_ = seq1; seq2_ = seq2; len1_ = len1; len2_ = len2; len_ = len ? len : std::max (len1_, len2_); dev_ = dev ? dev : (diff__ (len1_, len2_) + DEF_MIN_DEV); wid_ = wid (); dynamic (); return bestWeight_; }
void DBQueryInfo::resolve(JSContext* cx, JS::HandleObject obj, JS::HandleId id, bool* resolvedp) { *resolvedp = false; IdWrapper wid(cx, id); // We only use this for index access if (!wid.isInt()) { return; } JS::RootedObject parent(cx); if (!JS_GetPrototype(cx, obj, &parent)) uasserted(ErrorCodes::InternalError, "Couldn't get prototype"); ObjectWrapper parentWrapper(cx, parent); JS::RootedValue arrayAccess(cx); parentWrapper.getValue(InternedString::arrayAccess, &arrayAccess); if (arrayAccess.isObject() && JS_ObjectIsFunction(cx, arrayAccess.toObjectOrNull())) { JS::AutoValueArray<1> args(cx); args[0].setInt32(wid.toInt32()); JS::RootedValue vp(cx); ObjectWrapper(cx, obj).callMethod(arrayAccess, args, &vp); if (!vp.isNullOrUndefined()) { ObjectWrapper o(cx, obj); // Assumes the user won't modify the contents of what DBQuery::arrayAccess returns // otherwise we need to install a getter. o.defineProperty(id, vp, 0); } *resolvedp = true; } }
MainWindow::MainWindow(int startState, QString run_binary, QWidget * parent, Qt::WindowFlags f) : QMainWindow(parent, f){ // Loading libq4wine-core.so #ifdef RELEASE libq4wine.setFileName(_CORELIB_PATH_); #else libq4wine.setFileName("../q4wine-lib/libq4wine-core"); #endif if (!libq4wine.load()){ libq4wine.load(); } // Getting corelib class pointer CoreLibClassPointer = (CoreLibPrototype *) libq4wine.resolve("createCoreLib"); CoreLib.reset((corelib *)CoreLibClassPointer(true)); clearTmp(); db_prefix.fixPrefixPath(); if (CoreLib->getSetting("DesktopImport", "importAtStartup", false, 0)==1){ Progress progress(0, ""); progress.exec(); } // importIcons(QString("%1/.local/share/applications/wine/").arg(QDir::homePath())); //exportProcess.close(); // Base GUI setup setupUi(this); if (!this->createSocket()){ this->close(); return; } if (startState == 1) this->showMinimized(); setWindowTitle(tr("%1 :. Qt GUI for Wine v%2").arg(APP_NAME) .arg(APP_VERS)); std::auto_ptr<QVBoxLayout> vlayout (new QVBoxLayout); std::auto_ptr<PrefixConfigWidget> configWidget (new PrefixConfigWidget(tabPrefixSeup)); connect(configWidget.get(), SIGNAL(updateDatabaseConnections()), this, SLOT(updateDtabaseConnectedItems())); connect(configWidget.get(), SIGNAL(setTabIndex (int)), tbwGeneral, SLOT(setCurrentIndex (int))); connect(this, SIGNAL(updateDatabaseConnections()), configWidget.get(), SLOT(getPrefixes())); std::auto_ptr<LoggingWidget> logWidget (new LoggingWidget(tabLogging)); connect (this, SIGNAL(reloadLogData()), logWidget.get(), SLOT(getLogRecords())); logWidget->getLogRecords(); logLayout->addWidget(logWidget.release()); std::auto_ptr<IconListWidget> lstIcons (new IconListWidget(tabPrograms)); connect(this, SIGNAL(runProgramRequest(QString)), lstIcons.get(), SLOT(runProgramRequest(QString))); connect(lstIcons.get(), SIGNAL(iconItemClick(QString, QString, QString, QString, QString)), this, SLOT(updateIconDesc(QString, QString, QString, QString, QString))); connect(lstIcons.get(), SIGNAL(changeStatusText(QString)), this, SLOT(changeStatusText(QString))); connect(lstIcons.get(), SIGNAL(appRunned(bool)), this, SLOT(setMeVisible(bool))); std::auto_ptr<PrefixTreeWidget> twPrograms (new PrefixTreeWidget(tabPrograms)); connect(twPrograms.get(), SIGNAL(updateDatabaseConnections()), this, SLOT(updateDtabaseConnectedItems())); connect(this, SIGNAL(updateDatabaseConnections()), twPrograms.get(), SLOT(getPrefixes())); connect(twPrograms.get(), SIGNAL(showFolderContents(QString, QString)), lstIcons.get(), SLOT(showFolderContents(QString, QString))); connect(twPrograms.get(), SIGNAL(setSearchFocus()), this, SLOT(setSearchFocus())); connect(twPrograms.get(), SIGNAL(changeStatusText(QString)), this, SLOT(changeStatusText(QString))); connect(this, SIGNAL(setDefaultFocus(QString, QString)), twPrograms.get(), SLOT(setDefaultFocus(QString, QString))); connect(configWidget.get(), SIGNAL(prefixIndexChanged(QString)), twPrograms.get(), SLOT(setDefaultFocus(QString))); connect(twPrograms.get(), SIGNAL(prefixIndexChanged(QString)), configWidget.get(), SLOT(setPrefix(QString))); connect(twPrograms.get(), SIGNAL(setTabIndex (int)), tbwGeneral, SLOT(setCurrentIndex (int))); connect(twPrograms.get(), SIGNAL(pasteAction()), lstIcons.get(), SLOT(iconPaste_Click())); std::auto_ptr<WineProcessWidget> procWidget (new WineProcessWidget(tabProcess)); connect(this, SIGNAL(stopProcTimer()), procWidget.get(), SLOT(stopTimer())); connect(this, SIGNAL(startProcTimer()), procWidget.get(), SLOT(startTimer())); connect(procWidget.get(), SIGNAL(changeStatusText(QString)), this, SLOT(changeStatusText(QString))); tabProcessLayout->addWidget(procWidget.release()); std::auto_ptr<PrefixControlWidget> prefixWidget (new PrefixControlWidget(tabPrefix)); connect(prefixWidget.get(), SIGNAL(updateDatabaseConnections()), twPrograms.get(), SLOT(getPrefixes())); connect(prefixWidget.get(), SIGNAL(updateDatabaseConnections()), this, SLOT(updateDtabaseConnectedItems())); connect(configWidget.get(), SIGNAL(prefixIndexChanged(QString)), prefixWidget.get(), SLOT(setDefaultFocus(QString))); connect(prefixWidget.get(), SIGNAL(prefixIndexChanged(QString)), configWidget.get(), SLOT(setPrefix(QString))); connect(prefixWidget.get(), SIGNAL(setTabIndex (int)), tbwGeneral, SLOT(setCurrentIndex (int))); connect(twPrograms.get(), SIGNAL(updateDatabaseConnections()), prefixWidget.get(), SLOT(updateDtabaseItems())); std::auto_ptr<IconListToolbar> iconToolBar (new IconListToolbar(tabPrograms)); connect(iconToolBar.get(), SIGNAL(searchFilterChange(QString)), lstIcons.get(), SLOT(setFilterString(QString))); connect(iconToolBar.get(), SIGNAL(changeView(int)), lstIcons.get(), SLOT(changeView(int))); std::auto_ptr<PrefixTreeToolbar> prefixToolBar (new PrefixTreeToolbar(tabPrograms)); connect(prefixToolBar.get(), SIGNAL(expandTree()), twPrograms.get(), SLOT(expandTree())); connect(prefixToolBar.get(), SIGNAL(collapseTree()), twPrograms.get(), SLOT(collapseTree())); connect(prefixToolBar.get(), SIGNAL(updatePrefixTree()), this, SLOT(updateDtabaseConnectedItems())); connect(prefixToolBar.get(), SIGNAL(updatePrefixTree()), prefixWidget.get(), SLOT(updateDtabaseItems())); vlayout.reset(new QVBoxLayout); vlayout->addWidget(prefixToolBar.release()); vlayout->addWidget(twPrograms.release()); vlayout->setMargin(0); vlayout->setSpacing(0); std::auto_ptr<QWidget> wid (new QWidget(tabPrograms)); wid->setLayout(vlayout.release()); splitter.reset(new QSplitter(tabPrograms)); splitter->addWidget(wid.release()); vlayout.reset(new QVBoxLayout); vlayout->addWidget(iconToolBar.release()); vlayout->addWidget(lstIcons.release()); vlayout->setMargin(0); vlayout->setSpacing(0); //vlayout->setContentsMargins(0,0,0,0); wid.reset(new QWidget(tabPrograms)); wid->setLayout(vlayout.release()); splitter->addWidget(wid.release()); vlayout.reset(new QVBoxLayout); vlayout->addWidget(splitter.get()); vlayout->addWidget(gbInfo); vlayout->setContentsMargins(3,0,3,3); tabPrograms->setLayout(vlayout.release()); tabPrefixLayout->addWidget(prefixWidget.release()); setupLayout->addWidget(configWidget.release()); // Updating database connected items updateDtabaseConnectedItems(); // Getting settings from config file this->createTrayIcon(); this->getSettings(); connect(tbwGeneral, SIGNAL(currentChanged(int)), this, SLOT(tbwGeneral_CurrentTabChange(int))); //connect(cmdCreateFake, SIGNAL(clicked()), this, SLOT(cmdCreateFake_Click())); //connect(cmdUpdateFake, SIGNAL(clicked()), this, SLOT(cmdUpdateFake_Click())); //Main menu actions connection to slots connect(mainRun, SIGNAL(triggered()), this, SLOT(mainRun_Click())); connect(mainPrograms, SIGNAL(triggered()), this, SLOT(mainPrograms_Click())); connect(mainLogging, SIGNAL(triggered()), this, SLOT(mainLogging_Click())); connect(mainProcess, SIGNAL(triggered()), this, SLOT(mainProcess_Click())); connect(mainSetup, SIGNAL(triggered()), this, SLOT(mainSetup_Click())); connect(mainPrefix, SIGNAL(triggered()), this, SLOT(mainPrefix_Click())); connect(mainImageManage, SIGNAL(triggered()), this, SLOT(mainImageManager_Click())); connect(mainAbout, SIGNAL(triggered()), this, SLOT(mainAbout_Click())); connect(mainAboutQt, SIGNAL(triggered()), this, SLOT(mainAboutQt_Click())); connect(mainExportIcons, SIGNAL(triggered()), this, SLOT(mainExportIcons_Click())); connect(mainOptions, SIGNAL(triggered()), this, SLOT(mainOptions_Click())); connect(mainInstall, SIGNAL(triggered()), this, SLOT(mainInstall_Click())); connect(mainExit, SIGNAL(triggered()), this, SLOT(mainExit_Click())); connect(mainImportWineIcons, SIGNAL(triggered()), this, SLOT(mainImportWineIcons_Click())); connect(mainVersionManager, SIGNAL(triggered()), this, SLOT(mainVersionManager_Click())); CoreLib->runAutostart(); #ifndef WITH_ICOUTILS mainExportIcons->setEnabled(false); #endif if (!run_binary.isEmpty()) messageReceived(run_binary); if (!trayIcon->isVisible()) show(); return; }
/* * Engine: search control */ void DFS::Worker::run(void) { Connector connector(_wid); pid = -1; int alt = -1; int kids = -1; connector.connect(); std::cerr << "connected to socket! \n"; /* * The engine maintains the following invariant: * - If the current space (cur) is not NULL, the path always points * to exactly that space. * - If the current space (cur) is NULL, the path always points * to the next space (if there is any). * * This invariant is needed so that no-goods can be extracted properly * when the engine is stopped or has found a solution. * */ // Peform initial delay, if not first worker if (this != engine().worker(0)) Support::Thread::sleep(Config::initial_delay); // Okay, we are in business, start working while (true) { switch (engine().cmd()) { case C_WAIT: // Wait engine().wait(); break; case C_TERMINATE: // Acknowledge termination request engine().ack_terminate(); // Wait until termination can proceed engine().wait_terminate(); // Terminate thread engine().terminated(); return; case C_RESET: // Acknowledge reset request engine().ack_reset_start(); // Wait until reset has been performed engine().wait_reset(); // Acknowledge that reset cycle is over engine().ack_reset_stop(); break; case C_WORK: // Perform exploration work { m.acquire(); if (idle) { m.release(); // Try to find new work // if (_wid != 0) // std::cerr << "stealing work, thread: " << _wid << std::endl; find(); // if (_wid != 0) // std::cerr << "found work with parent: " << pid << " thread: " // << _wid << std::endl; } else if (cur != NULL) { start(); if (stop(engine().opt())) { // Report stop m.release(); engine().stop(); } else { node++; std::ostringstream oss; if (path.entries() > 0) { Path::Edge& edge = path.top(); pid = edge.pid(); alt = std::min(edge.alt(), edge.choice()->alternatives() - 1); cur->print(*edge.choice(), alt, oss); } // sleep(1); switch (cur->status(*this)) { case SS_FAILED: { connector.createNode(_nid, pid, alt, 0, Profiling::NodeStatus::FAILED) .set_label(oss.str().c_str()) .set_thread_id(static_cast<char>(wid())) .send(); fail++; delete cur; cur = NULL; path.next(); m.release(); break; } case SS_SOLVED: { connector.createNode(_nid, pid, alt, 0, Profiling::NodeStatus::SOLVED) .set_label(oss.str().c_str()) .set_thread_id(static_cast<char>(wid())) .send(); // Deletes all pending branchers (void) cur->choice(); Space* s = cur->clone(false); delete cur; cur = NULL; path.next(); m.release(); engine().solution(s); } break; case SS_BRANCH: { Space* c; if ((d == 0) || (d >= engine().opt().c_d)) { c = cur->clone(); d = 1; } else { c = NULL; d++; } const Choice* ch = path.push(*this, _nid, cur,c); kids = ch->alternatives(); connector.createNode(_nid, pid, alt, kids, Profiling::NodeStatus::SOLVED) .set_label(oss.str().c_str()) .set_thread_id(static_cast<char>(wid())) .send(); cur->commit(*ch,0); m.release(); } break; default: GECODE_NEVER; } _nid += engine().workers(); } } else if (!path.empty()) { cur = path.recompute(d,engine().opt().a_d,*this); if (cur == NULL) path.next(); m.release(); } else { idle = true; path.ngdl(0); m.release(); // Report that worker is idle engine().idle(); } } break; default: GECODE_NEVER; } } }
bool CPinyinTrieMaker::constructFromLexicon(const char* fileName) { CWordCache cached_words; static char buf[4096]; static char word_buf[2048]; unsigned id; bool suc = true; std::set<TSyllableInfo> pyset; FILE *fp = fopen(fileName, "r"); if (!fp) return false; printf("Adding pinyin and corresponding words..."); fflush(stdout); while (fgets(buf, sizeof(buf), fp) != NULL) { if (!parseLine(buf, word_buf, id, pyset)) { if (word_buf[0] != L'<' && word_buf[0] != 0) { if (m_Lexicon.size() < id+1) m_Lexicon.resize(id+1); m_Lexicon[id] = std::string(word_buf); } continue; } unsigned gbcategory = getPureGBEncoding(word_buf); std::set<TSyllableInfo>::const_iterator its = pyset.begin(); std::set<TSyllableInfo>::const_iterator ite = pyset.end(); for (; its != ite; ++its) { const char *pystr = its->m_py.c_str(); int cost = its->m_cost; if (cost >= 0) { if (m_Lexicon.size() < id+1) m_Lexicon.resize(id+1); m_Lexicon[id] = std::string(word_buf); CPinyinTrieMaker::TWordId wid(id, cost, false, gbcategory); suc = insertFullPinyinPair(pystr, wid) && suc; } else { // cache the rarely seen phonetic TCacheRecord record; record.word_buf = word_buf; record.pystr = pystr; record.cost = cost; record.gbcategory = gbcategory; cached_words.push_back (record); } } } fclose(fp); // insert the cached words with rarely seen phonetic // FIXME: may use the pinlv information in unicode data later ++id; for (CWordCache::iterator it = cached_words.begin(); it != cached_words.end(); ++it, ++id) { if (m_Lexicon.size() < id+1) m_Lexicon.resize(id+1); m_Lexicon[id] = it->word_buf; int cost = 30 / (-it->cost); CPinyinTrieMaker::TWordId wid(id, cost, true, it->gbcategory); suc = insertFullPinyinPair(it->pystr.c_str(), wid) && suc; } printf("\n %zd primitive nodes", TNode::m_AllNodes.size()); fflush(stdout); threadNonCompletePinyin(); printf("\n %zd total nodes", TNode::m_AllNodes.size()); fflush(stdout); std::string pyPrefix = ""; //print(stderr, &m_RootNode, pyPrefix); printf("\n"); fflush(stdout); return suc; }