bool graph_miner_mpi_dyn::can_split_work(){ //This will prevent splitting work beyond the first level (single edge) //if(task_split_level == 0 && dfs_task_queue[task_split_level].size() == 0) //return false; if(!working()) return false; //prevents giving work until regeneration is complete //if(embeddings_regeneration_level > 0) // return false; task_split_level = 0; //while(dfs_task_queue[task_split_level].size() < task_split_threshold && task_split_level < dfs_task_queue.size() ){ while(dfs_task_queue[task_split_level].size() < task_split_threshold && task_split_level < current_dfs_level ) { task_split_level++; DEBUG(*(graph_miner::logger), "task split level changed = " << task_split_level << " queue size = " << dfs_task_queue[task_split_level].size()); } if(dfs_task_queue[task_split_level].size() >= task_split_threshold) return true; return false; }
int main() { fgets (input, 256, stdin); end = strlen(input); working(); return 0; }
void FileGathererThread::run() { for (;;) { { WorkingSetter working( _imp.get() ); if ( _imp->checkForExit() ) { return; } { QMutexLocker k(&_imp->requestedDirMutex); _imp->itemBeingFetched = _imp->requestedItem; } ///Doesn't need to be protected under requestedDirMutex since it is written to only by this thread gatheringKernel(_imp->itemBeingFetched); _imp->itemBeingFetched.reset(); } //WorkingSetter _imp->checkForAbort(); { QMutexLocker l(&_imp->startCountMutex); while (_imp->startCount <= 0) { _imp->startCountCond.wait(&_imp->startCountMutex); } _imp->startCount = 0; } } }
int monitoring(){ int forkPID; bool useCheckpoint = false; //Keep monitoring forever until the worker succeeds while(1){ //Create a worker only if we didnt create a checkpoint if(!useCheckpoint){ if((forkPID = fork()) < 0){ perror("Error: fork couldn't create a child!"); //Loop again continue; } } //Check if this process is the worker if(forkPID == 0) //Start the worker from scrach working(); else { //Reserved for the status of the worker after it was terminated int status; int waitPID; do { //printf("Monitor: Waiting before making a checkpoint!\n"); usleep(cpInterval*1000000); //printf("Monitor: Sending a siganl to make a checkpoint!\n"); //time to send dump request kill(forkPID, SIGUSR1); //printf("Monitor: waiting for the worker to respond!\n"); waitPID = waitpid((pid_t)forkPID, &status, WNOHANG); //wait again if the process was interrupted by alarm } while (waitPID == 0); //Wait for the worker until it terminates //waitPID = waitpid((pid_t)forkPID, &status, 0); if(waitPID < 0) perror("Error: waitpid couldn't let the monitor wait until the worker has finished"); else if(WIFEXITED(status)) if(WEXITSTATUS(status)){ //Monitor: This worker failed //Set CRIU options before restoring the last safe state setCriuOptions(); //Restore the worker from last safe state if((forkPID = criu_restore_child()) < 0) { perror("Error: criu_restore_child failed to restore child!\n"); }else{ printf("Successfully restored child with pid: %d\n", forkPID); useCheckpoint = true; } } else { //Monitor: The worker succeeded! exit(0); } } } }
boost::optional<Quantity> QuantityConverterSingleton::convert(const Quantity &original, const Unit& targetUnits) const { Quantity working(original); OptionalQuantity candidate; // See if nothing to be done. (Check for equality of system and base units + exponents.) if ((working.system() == targetUnits.system()) && (working.units() == targetUnits)) { // Assume targetUnits has desired scale. working.setScale(targetUnits.scale().exponent); return working; } // All conversions go through SI if (working.system() != UnitSystem::SI) { candidate = m_convertToSI(working); if (!candidate) { return boost::none; } working = *candidate; } // Retain pretty string OptionalQuantity result = m_convertToTargetFromSI(working,targetUnits); if (result && result->prettyUnitsString(false).empty() && !targetUnits.prettyString(false).empty()) { result->setPrettyUnitsString(targetUnits.prettyString(false)); } return result; }
void CloseFidonet(int force) { char fin[PATH_MAX], fout[PATH_MAX], temp[10]; FILE *fi, *fo; st_list *fid = NULL, *tmp; snprintf(fin, PATH_MAX, "%s/etc/fidonet.data", getenv("MBSE_ROOT")); snprintf(fout, PATH_MAX, "%s/etc/fidonet.temp", getenv("MBSE_ROOT")); if (FidoUpdated == 1) { if (force || (yes_no((char *)"Database is changed, save changes") == 1)) { working(1, 0, 0); exp_golded = TRUE; fi = fopen(fout, "r"); fo = fopen(fin, "w"); fread(&fidonethdr, fidonethdr.hdrsize, 1, fi); fwrite(&fidonethdr, fidonethdr.hdrsize, 1, fo); while (fread(&fidonet, fidonethdr.recsize, 1, fi) == 1) if (!fidonet.deleted) { snprintf(temp, 10, "%05d", fidonet.zone[0]); fill_stlist(&fid, temp, ftell(fi) - fidonethdr.recsize); } sort_stlist(&fid); for (tmp = fid; tmp; tmp = tmp->next) { fseek(fi, tmp->pos, SEEK_SET); fread(&fidonet, fidonethdr.recsize, 1, fi); fwrite(&fidonet, fidonethdr.recsize, 1, fo); } fclose(fi); fclose(fo); unlink(fout); tidy_stlist(&fid); chmod(fin, 0640); Syslog('+', "Updated \"fidonet.data\""); if (!force) working(6, 0, 0); return; } } chmod(fin, 0640); working(1, 0, 0); unlink(fout); }
void CloseMGroup(int force) { char fin[PATH_MAX], fout[PATH_MAX]; FILE *fi, *fo; st_list *mgr = NULL, *tmp; free(gedgrps); snprintf(fin, PATH_MAX, "%s/etc/mgroups.data", getenv("MBSE_ROOT")); snprintf(fout, PATH_MAX, "%s/etc/mgroups.temp", getenv("MBSE_ROOT")); if (MGrpUpdated == 1) { if (force || (yes_no((char *)"Database is changed, save changes") == 1)) { working(1, 0, 0); fi = fopen(fout, "r"); fo = fopen(fin, "w"); fread(&mgrouphdr, mgrouphdr.hdrsize, 1, fi); fwrite(&mgrouphdr, mgrouphdr.hdrsize, 1, fo); while (fread(&mgroup, mgrouphdr.recsize, 1, fi) == 1) if (!mgroup.Deleted) fill_stlist(&mgr, mgroup.Name, ftell(fi) - mgrouphdr.recsize); sort_stlist(&mgr); for (tmp = mgr; tmp; tmp = tmp->next) { fseek(fi, tmp->pos, SEEK_SET); fread(&mgroup, mgrouphdr.recsize, 1, fi); fwrite(&mgroup, mgrouphdr.recsize, 1, fo); } tidy_stlist(&mgr); fclose(fi); fclose(fo); unlink(fout); chmod(fin, 0660); disk_reset(); Syslog('+', "Updated \"mgroups.data\""); if (!force) working(6, 0, 0); exp_golded = TRUE; return; } } chmod(fin, 0660); working(1, 0, 0); unlink(fout); }
void CloseHatch(int force) { char fin[PATH_MAX], fout[PATH_MAX]; FILE *fi, *fo; st_list *hat = NULL, *tmp; snprintf(fin, PATH_MAX, "%s/etc/hatch.data", getenv("MBSE_ROOT")); snprintf(fout, PATH_MAX, "%s/etc/hatch.temp", getenv("MBSE_ROOT")); if (HatchUpdated == 1) { if (force || (yes_no((char *)"Database is changed, save changes") == 1)) { working(1, 0, 0); fi = fopen(fout, "r"); fo = fopen(fin, "w"); fread(&hatchhdr, hatchhdr.hdrsize, 1, fi); fwrite(&hatchhdr, hatchhdr.hdrsize, 1, fo); while (fread(&hatch, hatchhdr.recsize, 1, fi) == 1) if (!hatch.Deleted) fill_stlist(&hat, hatch.Spec, ftell(fi) - hatchhdr.recsize); sort_stlist(&hat); for (tmp = hat; tmp; tmp = tmp->next) { fseek(fi, tmp->pos, SEEK_SET); fread(&hatch, hatchhdr.recsize, 1, fi); fwrite(&hatch, hatchhdr.recsize, 1, fo); } tidy_stlist(&hat); fclose(fi); fclose(fo); unlink(fout); chmod(fin, 0640); disk_reset(); Syslog('+', "Updated \"hatch.data\""); if (!force) working(6, 0, 0); return; } } chmod(fin, 0640); working(1, 0, 0); unlink(fout); }
void CloseMagics(int force) { char fin[PATH_MAX], fout[PATH_MAX]; FILE *fi, *fo; st_list *mag = NULL, *tmp; snprintf(fin, PATH_MAX, "%s/etc/magic.data", getenv("FTND_ROOT")); snprintf(fout, PATH_MAX, "%s/etc/magic.temp", getenv("FTND_ROOT")); if (MagicUpdated == 1) { if (force || (yes_no((char *)"Database is changed, save changes") == 1)) { working(1, 0, 0); fi = fopen(fout, "r"); fo = fopen(fin, "w"); fread(&magichdr, magichdr.hdrsize, 1, fi); fwrite(&magichdr, magichdr.hdrsize, 1, fo); while (fread(&magic, magichdr.recsize, 1, fi) == 1) if (!magic.Deleted) fill_stlist(&mag, magic.Mask, ftell(fi) - magichdr.recsize); sort_stlist(&mag); for (tmp = mag; tmp; tmp = tmp->next) { fseek(fi, tmp->pos, SEEK_SET); fread(&magic, magichdr.recsize, 1, fi); fwrite(&magic, magichdr.recsize, 1, fo); } fclose(fi); fclose(fo); tidy_stlist(&mag); unlink(fout); chmod(fin, 0640); disk_reset(); Syslog('+', "Updated \"magic.data\""); if (!force) working(6, 0, 0); return; } } chmod(fin, 0640); working(1, 0, 0); unlink(fout); }
void CloseIBC(int force) { char fin[PATH_MAX], fout[PATH_MAX]; FILE *fi, *fo; st_list *vir = NULL, *tmp; snprintf(fin, PATH_MAX, "%s/etc/ibcsrv.data", getenv("FTND_ROOT")); snprintf(fout, PATH_MAX, "%s/etc/ibcsrv.temp", getenv("FTND_ROOT")); if (IBCUpdated == 1) { if (force || (yes_no((char *)"Database is changed, save changes") == 1)) { working(1, 0, 0); fi = fopen(fout, "r"); fo = fopen(fin, "w"); fread(&ibcsrvhdr, ibcsrvhdr.hdrsize, 1, fi); fwrite(&ibcsrvhdr, ibcsrvhdr.hdrsize, 1, fo); while (fread(&ibcsrv, ibcsrvhdr.recsize, 1, fi) == 1) if (!ibcsrv.Deleted) fill_stlist(&vir, ibcsrv.comment, ftell(fi) - ibcsrvhdr.recsize); sort_stlist(&vir); for (tmp = vir; tmp; tmp = tmp->next) { fseek(fi, tmp->pos, SEEK_SET); fread(&ibcsrv, ibcsrvhdr.recsize, 1, fi); fwrite(&ibcsrv, ibcsrvhdr.recsize, 1, fo); } tidy_stlist(&vir); fclose(fi); fclose(fo); unlink(fout); chmod(fin, 0640); Syslog('+', "Updated \"ibcsrv.data\""); if (!force) working(6, 0, 0); return; } } chmod(fin, 0640); unlink(fout); }
void working() { int tmp; for ( ; i < end; i++) switch ( input[i] ) { case '>' : p = plus(p); break; case '<' : p = minus(p); break; case '|' : p = 0; break; case ',' : scanf("%d",&tmp ); tape[p] = tmp; break; case '.' : printf("%u\n", tape[p]); break; case '=' : tape[p] = tape[ minus(p) ]; break; case '0' : tape[p] = 0; break; case '!' : var = tape[p]; break; case '?' : tape[p] = var; break; case '*' : tape[p] = ( tape[p] * tape[minus(p)] ) % 256; break; case '/' : tape[p] = tape[p] / tape[minus(p)]; break; case '+' : tape[p] = (tape[p]==255)?0:(tape[p]+1); break; case '-' : tape[p] = (!tape[p])?0:(tape[p]-1); break; case '^' : printf("%d", var); break; case '$' : var = p; case '(' : if (!tape[p]) { tmp = 1; for (i++; tmp; i++) if (input[i]=='(') tmp++; else if (input[i]==')') tmp--; i--; } break; case '[' : if ( !tape[p] ) { tmp = 1; for (i++; tmp; i++) if (input[i]=='[') tmp++; else if (input[i]==']') tmp--; i--; } else { i++; tmp = i; do { i = tmp; working(); } while ( tape[p] ); } break; case ']' : return; } }
int CheckMgroup(void) { int ncnt, mcnt; working(1, 0, 0); ncnt = GroupInNode(mgroup.Name, TRUE); mcnt = GroupInMarea(mgroup.Name); if (ncnt || mcnt) { errmsg((char *)"Error, %d node(s) and/or %d message area(s) connected", ncnt, mcnt); return TRUE; } return FALSE; }
void CloseOneline(int force) { char fin[PATH_MAX], fout[PATH_MAX]; snprintf(fin, PATH_MAX, "%s/etc/oneline.data", getenv("FTND_ROOT")); snprintf(fout, PATH_MAX, "%s/etc/oneline.temp", getenv("FTND_ROOT")); if (OnelUpdated == 1) { if (force || (yes_no((char *)"Database is changed, save changes") == 1)) { working(1, 0, 0); if ((rename(fout, fin)) == 0) unlink(fout); chmod(fin, 0660); Syslog('+', "Updated \"oneline.data\""); if (!force) working(6, 0, 0); return; } } chmod(fin, 0660); working(1, 0, 0); unlink(fout); }
void FileTestContext::workingFileFromTemplate( const char* templateName, ///< testInputDir file TemplateConverter* converter, ///< conversion function const char* filename ///< testWorkingDir file ) { /* * The template in the testInputDir and the filename in testWorkingDir are opened, * and then both files are passed to the converter. * * The converter is responsible for reading the template and writing the filename. * * If no filename is supplied, its name is the same as the templateName. */ CPPUNIT_ASSERT(templateName != NULL); CPPUNIT_ASSERT(converter != NULL); // Open the template file UtlString templatePath; inputFilePath(templateName, templatePath); OsPath input(templatePath); OsFile inputFile(input); CPPUNIT_ASSERT_EQUAL(OS_SUCCESS, inputFile.open(OsFile::READ_ONLY)); // Create/open the registration DB file. UtlString workingPath; workingFilePath(filename ? filename : templateName, workingPath); OsPath working(workingPath); OsFile workingFile(working); CPPUNIT_ASSERT_EQUAL(OS_SUCCESS, workingFile.open(OsFile::CREATE)); // Let the converter convert the files converter(&inputFile, &workingFile); CPPUNIT_ASSERT_EQUAL(OS_SUCCESS, workingFile.flush()); Os::Logger::instance().log(FAC_UNIT_TEST, PRI_NOTICE, "FileTestContext::workingFileFromTemplate '%s' -> '%s'", templateName, workingPath.data()); inputFile.close(); workingFile.close(); }
void initdatabases(void) { if (!init) { clr_index(); working(1, 0, 0); set_color(WHITE, BLACK); ftnd_mvprintw( 5, 6, " INIT DATABASES"); IsDoing("Init Databases"); } config_read(); InitArchive(); InitDomain(); InitFilearea(); InitFilefind(); InitFGroup(); InitFidonetdb(); InitFidonet(); InitHatch(); InitLanguage(); InitLimits(); InitMagics(); InitMsgarea(); InitMGroup(); InitModem(); InitNewfiles(); InitNGroup(); InitNodes(); InitOneline(); InitProtocol(); InitService(); InitTicarea(); InitTtyinfo(); InitUsers(); InitVirus(); InitRoute(); InitFDB(); InitIBC(); if (!init) { clr_index(); } }
boost::optional<double> ScheduleBase_Impl::toDouble(const Quantity& quantity) const { OptionalDouble result; OptionalQuantity working(quantity); if (OptionalScheduleTypeLimits scheduleTypeLimits = this->scheduleTypeLimits()) { if (OptionalUnit siUnits = ScheduleTypeLimits::units(scheduleTypeLimits->unitType(),false)) { if (siUnits) { if (working->units() == *siUnits) { working->setScale(siUnits->scale().exponent); } else { working = convert(*working,*siUnits); } if (working) { result = working->value(); } } } } return result; }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); inforWin = new QTextEdit(this); debugWin = new QPlainTextEdit(); debugWin2 = new QPlainTextEdit(); debugWin->setWindowTitle("receive window"); debugWin2->setWindowTitle("post window"); //inforWin->setDisabled(true); //debugWin->setDisabled(true); setCentralWidget(inforWin); QMenu *testMenu = menuBar()->addMenu(tr("&Tools")); QMenu *test2Menu = menuBar()->addMenu(tr("&Tools2")); test2Menu->addAction(myTr("set timeout"), this, SLOT(setTimeout())); test2Menu->addAction(tr("settings"), this, SLOT(inputdata())); testMenu->addAction(myTr("登陆"), this, SLOT(loginsis())); testMenu->addAction(myTr("load thread from internet"), this, SLOT(loadthreadfromeinternet())); testMenu->addAction(myTr("working"), this, SLOT(working())); testMenu->addAction(myTr("catalog"), this, SLOT(generateCatalog())); #define DEBUG_MODE #ifdef DEBUG_MODE testMenu->addAction(myTr("load thread from file and checking"), this, SLOT(loadthreadfromfileandchecking())); testMenu->addAction(myTr("fixPoster"), this, SLOT(fixPoster())); testMenu->addAction(myTr("test"), this, SLOT(test4())); testMenu->addAction(myTr("fanye"), this, SLOT(fanye())); testMenu->addAction(myTr("robfloor"), this, SLOT(robfloor())); testMenu->addAction(myTr("clear cookie"), this, SLOT(clearCookie())); testMenu->addAction(myTr("签到"), this, SLOT(registersis())); //connect(nam, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*))); test2Menu->addAction(myTr("toggle internet mode"), this, SLOT(togglenet())); #endif }
void FileTestContext::inputFile(const char* filename) { UtlString inputPath; inputFilePath(filename, inputPath); UtlString workingPath; workingFilePath(filename, workingPath); OsPath input(inputPath); OsPath working(workingPath); OsPath workingDirPath(working.getDirName()); workingDirPath.strip(UtlString::trailing, OsPath::separator(0)); OsDir workingDir(workingDirPath); if (!workingDir.exists()) { UtlString msg; msg.append("FileTestContext::inputFile failed to create working directory '"); msg.append(working.getDirName().data()); msg.append("'"); CPPUNIT_ASSERT_EQUAL_MESSAGE(msg.data(), OS_SUCCESS,OsFileSystem::createDir(workingDirPath,TRUE)); } UtlString msg; msg.append("FileTestContext::inputFile copy failed from '"); msg.append(inputPath); msg.append("' -> '"); msg.append(workingPath); msg.append("'"); CPPUNIT_ASSERT_EQUAL_MESSAGE(msg.data(), OS_SUCCESS, OsFileSystem::copy(input, working) ); Os::Logger::instance().log(FAC_UNIT_TEST, PRI_NOTICE, "FileTestContext::inputFile '%s' -> '%s'", inputPath.data(), workingPath.data()); }
void *server(int server_priority) { int rcvid, status; char myRMessage[BUFSIZE]; struct _msg_info my_msg_info; pid = getpid(); chid = ChannelCreate(NULL); if (chid == -1) { perror("error creating a channel\n"); exit(EXIT_FAILURE); } printf("the server started with pid: %d, chid: %d, priority: %d" , pid, chid, server_priority); while(1) { rcvid = MsgReceive(chid, myRMessage, BUFSIZE, &my_msg_info); printf("the server received message from %d with priority %d\n",my_msg_info.tid, my_msg_info.priority); printf("before server working for %d", my_msg_info.tid); working(my_msg_info.tid); printf("after server working for %d", my_msg_info.tid); status = MsgReply(rcvid, 0, NULL, 0); if (status == -1) { perror("error in reply\n"); exit(EXIT_FAILURE); } printf("the server replied to %d.\n", my_msg_info); } return; }
bool utfConvert( const std::basic_string<From>& from, std::basic_string<To>& to, ConversionResult(*cvtfunc)(const typename FromTrait::ArgType**, const typename FromTrait::ArgType*, typename ToTrait::ArgType**, typename ToTrait::ArgType*, ConversionFlags) ) { static_assert(sizeof(From) == sizeof(typename FromTrait::ArgType), "Error size mismatched"); static_assert(sizeof(To) == sizeof(typename ToTrait::ArgType), "Error size mismatched"); if (from.empty()) { to.clear(); return true; } // See: http://unicode.org/faq/utf_bom.html#gen6 static const int most_bytes_per_character = 4; const size_t maxNumberOfChars = from.length(); // all UTFs at most one element represents one character. const size_t numberOfOut = maxNumberOfChars * most_bytes_per_character / sizeof(To); std::basic_string<To> working(numberOfOut, 0); auto inbeg = reinterpret_cast<const typename FromTrait::ArgType*>(&from[0]); auto inend = inbeg + from.length(); auto outbeg = reinterpret_cast<typename ToTrait::ArgType*>(&working[0]); auto outend = outbeg + working.length(); auto r = cvtfunc(&inbeg, inend, &outbeg, outend, strictConversion); if (r != conversionOK) return false; working.resize(reinterpret_cast<To*>(outbeg) - &working[0]); to = std::move(working); return true; };
void CShareManager::run() { while(true) { { QMutexLocker l(&taskListmutex_); while( !umountAll_ && taskList_.isEmpty() ) cond_.wait(&taskListmutex_); } if(umountAll_) { umountAllImpl(); return; } started_ = false; while(!taskList_.empty()) { if(!started_) { emit working(); started_ = true; } QPair<ETask, QSharedPointer<SShare> > task; { QMutexLocker l(&taskListmutex_); task = taskList_.front(); taskList_.pop_front(); } switch(task.first) { case Mount: mount(task.second); break; case MountAutoShare: mountAutoShare(task.second); break; case Umount: umount(task.second); break; case MakePath: makePath(task.second); break; case DestroyPath: destroyPath(task.second); break; default: break; } } if(started_) { started_ = false; emit done(); } } }
boost::optional<Quantity> QuantityConverterSingleton::m_convertToTargetFromSI( const Quantity& original,const Unit& targetUnits) const { Quantity working(original); // Make sure to work unscaled: 10^0 if (working.scale().exponent != 0) { working.setScale(0); } Quantity converted(working.value(),targetUnits.system()); if ((working.units() == targetUnits) && (working.system() == targetUnits.system())) { converted = working; } else { // Get the base units of targetUnits std::vector<std::string> baseOfTarget = targetUnits.baseUnits(); // Loop over base units in original and apply (inverse of) conversions in m_toSImap std::vector<std::string>::const_iterator it = baseOfTarget.begin(); std::vector<std::string>::const_iterator end = baseOfTarget.end(); while( it != end ) { int baseExponent = targetUnits.baseUnitExponent(*it); // apply conversion factor BaseUnitConversionMap::const_iterator mapItr = m_toSImap.find(*it); if (mapItr == m_toSImap.end()) { LOG(Error,"Cannot convert to a target Unit containing base unit '" << *it << "', because it is not registered with the QuantityConverter."); return boost::none; } baseUnitConversionFactor factor = m_toSImap.find(*it)->second; if (factor.offset != 0.0) { for( int i = 0; i < std::abs(baseExponent); ++i) { if( baseExponent > 0 ){ converted.setValue( (converted.value() - factor.offset) / factor.factor); }else { converted.setValue( (converted.value() - factor.offset) * factor.factor); } } } else { converted.setValue( converted.value() * std::pow(factor.factor,-baseExponent) ); } // Set units in converted converted.setBaseUnitExponent(*it, converted.baseUnitExponent(*it) + baseExponent); // Monitor left over units in working // Parse the conversion string in case the target converts to more than one SI base unit Unit sourceBase = parseUnitString(factor.targetUnit); std::vector<std::string> sourceStrings = sourceBase.baseUnits(); std::vector<std::string>::const_iterator sourceItr = sourceStrings.begin(); std::vector<std::string>::const_iterator sourceEnd = sourceStrings.end(); while( sourceItr != sourceEnd ) { int exp = sourceBase.baseUnitExponent( *sourceItr ); if( exp != 0 ) { working.setBaseUnitExponent(*sourceItr, working.baseUnitExponent(*sourceItr) - baseExponent*exp); } ++sourceItr; } // end while( sourceItr != sourceEnd ) ++it; } if (!working.standardUnitsString().empty()) { LOG(Error,"Could not convert " << original << " to " << targetUnits << ". Have " << working.standardUnitsString() << "left over."); return boost::none; } } // Set result scale to match targetUnits scale if (targetUnits.scale().exponent != 0) { converted.setScale(targetUnits.scale().exponent); } // Check if there is a pretty string for the result std::string pretty = UnitFactory::instance().lookupPrettyString( converted.standardUnitsString(false) ); if( !(pretty.empty()) ) { converted.setPrettyUnitsString( pretty ); } return converted; }
Quantity QuantityConverterSingleton::m_convertFromSI(const Quantity &original, const UnitSystem targetSys) const { Quantity working(original); // Make sure to work unscaled: 10^0 int scaleExponent = working.scale().exponent; if (working.scale().exponent != 0) { working.setScale(0); } Quantity converted(working.value(),targetSys); UnitSystemConversionMultiMap::const_iterator factorItr; // m_fromSImap is a multi-map, so get the range of values that match the key 'targetSys' std::pair<UnitSystemConversionMultiMap::const_iterator, UnitSystemConversionMultiMap::const_iterator> systemFactors; systemFactors = m_fromSIBySystemMap.equal_range( targetSys ); for( factorItr = systemFactors.first; factorItr != systemFactors.second; ++factorItr) { baseUnitConversionFactor fromFactor = (*factorItr).second; int workingExp = working.baseUnitExponent(fromFactor.originalUnit); if (fromFactor.offset != 0.0) { for( int i=0; i < std::abs(workingExp); ++i ) { if( workingExp > 0 ) { converted.setValue( (converted.value() * fromFactor.factor) + fromFactor.offset ); } else { converted.setValue( (converted.value() / fromFactor.factor) + fromFactor.offset ); } } } else { converted.setValue(converted.value() * std::pow(fromFactor.factor,workingExp) ); } // Parse the conversion string incase the SI unit converts to more than one target base unit Unit targetBase = parseUnitString(fromFactor.targetUnit); std::vector<std::string> targetStrings = targetBase.baseUnits(); std::vector<std::string>::const_iterator targetItr = targetStrings.begin(); std::vector<std::string>::const_iterator targetEnd = targetStrings.end(); while( targetItr != targetEnd ) { int exp = targetBase.baseUnitExponent( *targetItr ); if( exp != 0) { converted.setBaseUnitExponent(*targetItr,converted.baseUnitExponent(*targetItr) + workingExp*exp); } ++targetItr; }//End while( convItr != targetEnd ) } // Set result scale to match original scale if( scaleExponent != 0 ) { converted.setScale(scaleExponent); } // Check if there is a pretty string for the result std::string pretty = UnitFactory::instance().lookupPrettyString( converted.standardUnitsString(false) ); if( !(pretty.empty()) ) { converted.setPrettyUnitsString( pretty ); } return converted; }
boost::optional<Quantity> QuantityConverterSingleton::m_convertToSI(const Quantity &original) const { // create a working copy of the original Quantity working(original); // Make sure to work unscaled: 10^0 int scaleExponent = working.scale().exponent; if (working.scale().exponent != 0) { working.setScale(0); } // build a result quantity with SI units and value equal to original Quantity result(working.value(), UnitSystem(UnitSystem::SI)); // Get the base units of original std::vector<std::string> baseOfOriginal = original.baseUnits(); // Loop over base units in original and apply conversions found in m_toSImap std::vector<std::string>::const_iterator it = baseOfOriginal.begin(); std::vector<std::string>::const_iterator end = baseOfOriginal.end(); while( it != end ) { int baseExponent = working.baseUnitExponent(*it); // apply conversion factor BaseUnitConversionMap::const_iterator mapItr = m_toSImap.find(*it); if (mapItr == m_toSImap.end()) { LOG(Error,"Cannot convert base unit '" << *it << "' to SI because it is not " << "registered with the QuantityConverter."); return boost::none; } baseUnitConversionFactor factor = mapItr->second; if (factor.offset != 0.0) { for( int i = 0; i < std::abs(baseExponent); ++i) { if( baseExponent > 0 ){ result.setValue( (result.value() * factor.factor) + factor.offset); }else { result.setValue( (result.value() / factor.factor) + factor.offset); } } } else { result.setValue( result.value() * std::pow(factor.factor,baseExponent) ); } // Parse the conversion string in case the original converts to more than one SI base unit Unit targetBase = parseUnitString(factor.targetUnit); std::vector<std::string> targetStrings = targetBase.baseUnits(); std::vector<std::string>::const_iterator targetItr = targetStrings.begin(); std::vector<std::string>::const_iterator targetEnd = targetStrings.end(); while( targetItr != targetEnd ) { int exp = targetBase.baseUnitExponent( *targetItr ); if( exp != 0 ) { result.setBaseUnitExponent(*targetItr,result.baseUnitExponent(*targetItr) + baseExponent*exp); } ++targetItr; }//End while( convItr != convEnd ) ++it; }//End while( it != end ) // Set result scale to match original scale if( scaleExponent != 0 ) { result.setScale(scaleExponent); } // Check if there is a pretty string for the result std::string pretty = UnitFactory::instance().lookupPrettyString( result.standardUnitsString(false) ); if( !(pretty.empty()) ) { result.setPrettyUnitsString( pretty ); } return result; }
/** * Returns evaluations of all basis functions that are non-zero at a given evaluation point. * For a given evaluation point \f$x\f$, it stores tuples (std::pair) of * \f$(i,\phi_i(x))\f$ in the result vector for all basis functions that are non-zero. * If one wants to evaluate \f$f_N(x)\f$, one only has to compute * \f[ \sum_{r\in\mathbf{result}} \alpha[r\rightarrow\mathbf{first}] \cdot r\rightarrow\mathbf{second}. \f] * * @param basis a sparse grid basis * @param point evaluation point within the domain * @param alpha the sparse grid's coefficients * * @result result result of the function evaluation */ float_t operator()(BASIS& basis, const DataVector& point, const DataVector& alpha) { GridStorage::grid_iterator working(storage); // typedef GridStorage::index_type::level_type level_type; typedef GridStorage::index_type::index_type index_type; size_t bits = sizeof(index_type) * 8; // how many levels can we store in a index_type? size_t dim = storage->dim(); // Check for bounding box BoundingBox* bb = storage->getBoundingBox(); DataVector newPoint(point); if ( bb != NULL ) { for (size_t d = 0; d < dim; ++d) { DimensionBoundary dimbb = bb->getBoundary(d); // std::cout << "Dimension: " << d << " (left: " << // dimbb.leftBoundary << ", right: " << dimbb.rightBoundary << ")" << // std::endl; if (dimbb.leftBoundary == 0.0 && dimbb.rightBoundary == 1.0) { continue; } if (!(dimbb.leftBoundary <= newPoint[d] && newPoint[d] <= dimbb.rightBoundary) ) { // std::cout << "Out of bounds: " << point[d] << std::endl; return 0.0; } // std::cout << "Old: " << point[d] << std::endl; newPoint[d] = (newPoint[d] - dimbb.leftBoundary) / (dimbb.rightBoundary - dimbb.leftBoundary); // std::cout << "New: " << point[d] << std::endl; } } index_type* source = new index_type[dim]; for (size_t d = 0; d < dim; ++d) { // This does not really work on grids with borders. float_t temp = floor(newPoint[d] * static_cast<float_t>(1 << (bits - 2))) * 2; if (newPoint[d] == 1.0) { source[d] = static_cast<index_type> (temp - 1); } else { source[d] = static_cast<index_type> (temp + 1); } } float_t result = 0.0; rec(basis, point, 0, 1.0, working, source, alpha, result); delete[] source; return result; }
// system-config-printer --setup-printer='file:/tmp/printout' --devid='MFG:Ricoh;MDL:Aficio SP C820DN' PageDestinations::PageDestinations(const QVariantHash &args, QWidget *parent) : GenericPage(parent), ui(new Ui::PageDestinations), m_chooseLpd(new ChooseLpd(this)), m_chooseSamba(new ChooseSamba(this)), m_chooseSerial(new ChooseSerial(this)), m_chooseSocket(new ChooseSocket(this)), m_chooseUri(new ChooseUri(this)), m_chooseLabel(new QLabel(this)) { ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose); ui->stackedWidget->addWidget(m_chooseLpd); connect(m_chooseLpd, SIGNAL(allowProceed(bool)), SIGNAL(allowProceed(bool))); ui->stackedWidget->addWidget(m_chooseSamba); connect(m_chooseSamba, SIGNAL(allowProceed(bool)), SIGNAL(allowProceed(bool))); ui->stackedWidget->addWidget(m_chooseSerial); connect(m_chooseSerial, SIGNAL(allowProceed(bool)), SIGNAL(allowProceed(bool))); ui->stackedWidget->addWidget(m_chooseSocket); connect(m_chooseSocket, SIGNAL(allowProceed(bool)), SIGNAL(allowProceed(bool))); ui->stackedWidget->addWidget(m_chooseUri); connect(m_chooseUri, SIGNAL(allowProceed(bool)), SIGNAL(allowProceed(bool))); m_chooseLabel->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); ui->stackedWidget->addWidget(m_chooseLabel); // Hide the message widget ui->messageWidget->setMessageType(KMessageWidget::Error); ui->messageWidget->hide(); // setup default options setWindowTitle(i18nc("@title:window", "Select a Printer to Add")); m_model = new DevicesModel(this); ui->devicesTV->setModel(m_model); ui->devicesTV->setItemDelegate(new NoSelectionRectDelegate(this)); connect(ui->devicesTV->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(deviceChanged())); connect(m_model, SIGNAL(errorMessage(QString)), ui->messageWidget, SLOT(setText(QString))); connect(m_model, SIGNAL(errorMessage(QString)), ui->messageWidget, SLOT(animatedShow())); // Expand when a parent is added connect(m_model, SIGNAL(parentAdded(QModelIndex)), ui->devicesTV, SLOT(expand(QModelIndex))); // Update the view when the device URI combo box changed connect(ui->connectionsCB, SIGNAL(currentIndexChanged(int)), this, SLOT(deviceUriChanged())); ui->connectionsGB->setVisible(false); // Setup the busy cursor working(); connect(m_model, SIGNAL(loaded()), this, SLOT(notWorking())); if (!args.isEmpty()) { // set our args setValues(args); } }
void site_docs(void) { FILE *fp, *hp, *toc; char temp[PATH_MAX], temp1[PATH_MAX]; int page = 0, line = 0; if (config_read() == -1) return; snprintf(temp, PATH_MAX, "%s/share/doc/site.doc", getenv("FTND_ROOT")); mkdirs(temp, 0755); if ((fp = fopen(temp, "w")) == NULL) return; snprintf(temp1, PATH_MAX, "%s/tmp/toc.tmp", getenv("FTND_ROOT")); if ((toc = fopen(temp1, "w+")) == NULL) { fclose(fp); return; } clr_index(); working(1, 0, 0); IsDoing("Making Sitedocs"); Syslog('+', "Start creating sitedocs"); set_color(WHITE, BLACK); ftnd_mvprintw( 5, 6, "21. CREATING SITEDOCS"); set_color(CYAN, BLACK); ftnd_mvprintw( 7,11, (char *)"Erasing directory %s/share/doc/html", getenv("FTND_ROOT")); fflush(stdout); snprintf(temp, PATH_MAX, "-r -f %s/share/doc/html", getenv("FTND_ROOT")); execute_pth((char *)"rm", temp, (char *)"/dev/null", (char *)"/dev/null", (char *)"/dev/null"); if ((hp = open_webdoc((char *)"index.html", (char *)"BBS Site Documentation", NULL))) { fprintf(hp, "<UL>\n"); fprintf(hp, " <LI><A HREF=\"global.html\">Global Configuration</A></LI>\n"); fprintf(hp, " <LI><A HREF=\"fidonet.html\">Fido Networks</A></LI>\n"); fprintf(hp, " <LI><A HREF=\"archivers.html\">Archivers</A></LI>\n"); fprintf(hp, " <LI><A HREF=\"virscan.html\">Virus Scanners</A></LI>\n"); fprintf(hp, " <LI><A HREF=\"modem.html\">Modem Types</A></LI>\n"); fprintf(hp, " <LI><A HREF=\"ttyinfo.html\">TTY Lines Info</A></LI>\n"); fprintf(hp, " <LI><A HREF=\"nodes.html\">Fidonet Nodes</A></LI>\n"); fprintf(hp, " <LI>BBS: <A HREF=\"limits.html\">Security Limits</A></LI>\n"); fprintf(hp, " <LI>BBS: <A HREF=\"language.html\">Language Setup</A></LI>\n"); fprintf(hp, " <LI>BBS: <A HREF=\"menus.html\">BBS Menus</A></LI>\n"); fprintf(hp, " <LI>BBS: <A HREF=\"fileareas.html\">File Areas</A></LI>\n"); fprintf(hp, " <LI>BBS: <A HREF=\"protocol.html\">Transfer Protocols</A></LI>\n"); fprintf(hp, " <LI>BBS: <A HREF=\"oneliners.html\">Oneliners</A></LI>\n"); fprintf(hp, " <LI>Mail: <A HREF=\"msggroup.html\">Echomail Groups</A></LI>\n"); fprintf(hp, " <LI>Mail: <A HREF=\"msgareas.html\">Echomail Areas</A></LI>\n"); fprintf(hp, " <LI>TIC: <A HREF=\"filegroup.html\">FileEcho Groups</A></LI>\n"); fprintf(hp, " <LI>TIC: <A HREF=\"ticareas.html\">Fileecho Areas</A></LI>\n"); fprintf(hp, " <LI>TIC: <A HREF=\"hatch.html\">Hatch Manager</A></LI>\n"); fprintf(hp, " <LI>TIC: <A HREF=\"magic.html\">Magic Files</A></LI>\n"); fprintf(hp, " <LI><A HREF=\"newgroup.html\">Newfiles Groups</A></LI>\n"); fprintf(hp, " <LI><A HREF=\"newfiles.html\">Newfiles Reports</A></LI>\n"); fprintf(hp, " <LI><A HREF=\"filefind.html\">Filefind Setup</A></LI>\n"); fprintf(hp, " <LI><A HREF=\"users.html\">BBS Users</A></LI>\n"); fprintf(hp, " <LI><A HREF=\"service.html\">Mail Service Manager</A></LI>\n"); fprintf(hp, " <LI><A HREF=\"domain.html\">Domain translation</A></LI>\n"); fprintf(hp, " <LI><A HREF=\"task.html\">Task Manager</A></LI>\n"); fprintf(hp, " <LI><A HREF=\"route.html\">Network Routing</A></LI>\n"); fprintf(hp, " <LI><A HREF=\"ibcsrv.html\">Internet BBS Chat</A></LI>\n"); fprintf(hp, "</UL>\n"); close_webdoc(hp); } else { Syslog('+', "Can't create html documentation"); } ftnd_mvprintw(8,11, (char *)"Creating site documents"); fflush(stdout); horiz = 35; page = global_doc(fp, toc, page); dotter(); page = fido_doc(fp, toc, page); dotter(); page = archive_doc(fp, toc, page); dotter(); page = virus_doc(fp, toc, page); dotter(); page = modem_doc(fp, toc, page); dotter(); page = tty_doc(fp, toc, page); dotter(); page = node_doc(fp, toc, page); dotter(); page = bbs_doc(fp, toc, page); dotter(); page = mail_doc(fp, toc, page); dotter(); page = tic_doc(fp, toc, page); dotter(); page = newf_group_doc(fp, toc, page); dotter(); page = new_doc(fp, toc, page); dotter(); page = ff_doc(fp, toc, page); dotter(); page = service_doc(fp, toc, page); dotter(); page = domain_doc(fp, toc, page); dotter(); page = task_doc(fp, toc, page); dotter(); page = route_doc(fp, toc, page); dotter(); page = ibc_doc(fp, toc, page); dotter(); users_doc(); dotter(); ol_doc(); clrtoeol(); ftnd_mvprintw( 8,11, (char *)"Created site documents in %s/share/doc", getenv("FTND_ROOT")); fflush(stdout); /* * Append table of contents */ page = newpage(fp, page); addtoc(fp, toc, 21, 0, page, (char *)"Table of contents"); fprintf(fp, "\n\n"); line = 4; rewind(toc); while (fgets(temp, 256, toc) != NULL) { fprintf(fp, "%s", temp); line++; if (line == 56) { page = newpage(fp, page); line = 0; } } fprintf(fp, "\f"); fclose(fp); fclose(toc); unlink(temp1); Syslog('+', "Sitedocs created"); /* * Remove obsolete documents */ snprintf(temp, PATH_MAX, "%s/doc/xref.doc", getenv("FTND_ROOT")); unlink(temp); snprintf(temp, PATH_MAX, "%s/doc/stat.doc", getenv("FTND_ROOT")); unlink(temp); center_addstr(LINES -4, (char *)"Press any key"); readkey(LINES -4, COLS / 2 + 8, LIGHTGRAY, BLACK); return; }
char *PickNGroup(char *shdr) { static char MGrp[21] = ""; int records, i, o = 0, y, x; char pick[12]; FILE *fil; char temp[PATH_MAX]; int offset; clr_index(); working(1, 0, 0); if (config_read() == -1) { working(2, 0, 0); return MGrp; } records = CountNGroup(); if (records == -1) { working(2, 0, 0); return MGrp; } for (;;) { clr_index(); set_color(WHITE, BLACK); snprintf(temp, 81, "%s. NEWFILES GROUP SELECT", shdr); ftnd_mvprintw( 5, 4, temp); set_color(CYAN, BLACK); if (records != 0) { snprintf(temp, PATH_MAX, "%s/etc/ngroups.data", getenv("FTND_ROOT")); working(1, 0, 0); if ((fil = fopen(temp, "r")) != NULL) { fread(&ngrouphdr, sizeof(ngrouphdr), 1, fil); x = 2; y = 7; set_color(CYAN, BLACK); for (i = 1; i <= 20; i++) { if (i == 11) { x = 42; y = 7; } if ((o + i) <= records) { offset = sizeof(ngrouphdr) + (((o + i) - 1) * ngrouphdr.recsize); fseek(fil, offset, 0); fread(&ngroup, ngrouphdr.recsize, 1, fil); if (ngroup.Active) set_color(CYAN, BLACK); else set_color(LIGHTBLUE, BLACK); snprintf(temp, 81, "%3d. %-12s %-18s", o + i, ngroup.Name, ngroup.Comment); temp[38] = '\0'; ftnd_mvprintw(y, x, temp); y++; } } fclose(fil); } } strcpy(pick, select_pick(records, 20)); if (strncmp(pick, "-", 1) == 0) return MGrp; if (strncmp(pick, "N", 1) == 0) if ((o + 20) < records) o = o + 20; if (strncmp(pick, "P", 1) == 0) if ((o - 20) >= 0) o = o - 20; if ((atoi(pick) >= 1) && (atoi(pick) <= records)) { snprintf(temp, PATH_MAX, "%s/etc/ngroups.data", getenv("FTND_ROOT")); fil = fopen(temp, "r"); offset = sizeof(ngrouphdr) + ((atoi(pick) - 1) * ngrouphdr.recsize); fseek(fil, offset, 0); fread(&ngroup, ngrouphdr.recsize, 1, fil); fclose(fil); strcpy(MGrp, ngroup.Name); return MGrp; } } }
void EditNGroup(void) { int records, i, o, x, y; char pick[12]; FILE *fil; char temp[PATH_MAX]; int offset; clr_index(); working(1, 0, 0); IsDoing("Browsing Menu"); if (config_read() == -1) { working(2, 0, 0); return; } records = CountNGroup(); if (records == -1) { working(2, 0, 0); return; } if (OpenNGroup() == -1) { working(2, 0, 0); return; } o = 0; for (;;) { clr_index(); set_color(WHITE, BLACK); ftnd_mvprintw( 5, 4, "11. NEWFILES GROUPS SETUP"); set_color(CYAN, BLACK); if (records != 0) { snprintf(temp, PATH_MAX, "%s/etc/ngroups.temp", getenv("FTND_ROOT")); working(1, 0, 0); if ((fil = fopen(temp, "r")) != NULL) { fread(&ngrouphdr, sizeof(ngrouphdr), 1, fil); x = 2; y = 7; set_color(CYAN, BLACK); for (i = 1; i <= 20; i++) { if (i == 11 ) { x = 42; y = 7; } if ((o + i) <= records) { offset = sizeof(ngrouphdr) + (((o + i) - 1) * ngrouphdr.recsize); fseek(fil, offset, 0); fread(&ngroup, ngrouphdr.recsize, 1, fil); if (ngroup.Active) set_color(CYAN, BLACK); else set_color(LIGHTBLUE, BLACK); snprintf(temp, 81, "%3d. %-12s %-18s", o + i, ngroup.Name, ngroup.Comment); temp[38] = '\0'; ftnd_mvprintw(y, x, temp); y++; } } fclose(fil); } } strcpy(pick, select_record(records, 20)); if (strncmp(pick, "-", 1) == 0) { CloseNGroup(FALSE); return; } if (strncmp(pick, "A", 1) == 0) { working(1, 0, 0); if (AppendNGroup() == 0) { records++; working(1, 0, 0); } else working(2, 0, 0); } if (strncmp(pick, "N", 1) == 0) if ((o + 20) < records) o = o + 20; if (strncmp(pick, "P", 1) == 0) if ((o - 20) >= 0) o = o - 20; if ((atoi(pick) >= 1) && (atoi(pick) <= records)) { EditNGrpRec(atoi(pick)); o = ((atoi(pick) - 1) / 20) * 20; } } }
/* * Edit one record, return -1 if there are errors, 0 if ok. */ int EditNGrpRec(int Area) { FILE *fil; char mfile[PATH_MAX]; int offset; int j; unsigned int crc, crc1; clr_index(); working(1, 0, 0); IsDoing("Edit NewfileGroup"); snprintf(mfile, PATH_MAX, "%s/etc/ngroups.temp", getenv("FTND_ROOT")); if ((fil = fopen(mfile, "r")) == NULL) { working(2, 0, 0); return -1; } offset = sizeof(ngrouphdr) + ((Area -1) * sizeof(ngroup)); if (fseek(fil, offset, 0) != 0) { working(2, 0, 0); return -1; } fread(&ngroup, sizeof(ngroup), 1, fil); fclose(fil); crc = 0xffffffff; crc = upd_crc32((char *)&ngroup, crc, sizeof(ngroup)); NgScreen(); for (;;) { set_color(WHITE, BLACK); show_str( 7,18,12, ngroup.Name); show_str( 8,18,55, ngroup.Comment); show_bool( 9,18, ngroup.Active); show_bool(10,18, ngroup.Deleted); j = select_menu(4); switch(j) { case 0: crc1 = 0xffffffff; crc1 = upd_crc32((char *)&ngroup, crc1, sizeof(ngroup)); if (crc != crc1) { if (yes_no((char *)"Record is changed, save") == 1) { working(1, 0, 0); if ((fil = fopen(mfile, "r+")) == NULL) { working(2, 0, 0); return -1; } fseek(fil, offset, 0); fwrite(&ngroup, sizeof(ngroup), 1, fil); fclose(fil); NGrpUpdated = 1; working(6, 0, 0); } } IsDoing("Browsing Menu"); return 0; case 1: E_UPS( 7,18,12,ngroup.Name,"The ^name^ for this message group") case 2: E_STR( 8,18,55,ngroup.Comment,"The ^desription^ for this message group") case 3: E_BOOL(9,18, ngroup.Active, "Is this message group ^active^") case 4: E_BOOL(10,18, ngroup.Deleted, "Is this group ^Deleted^") } } return 0; }