void processFileArgument(char* name) { if (!table.lookup(name)) { fprintf(stderr, "File %s is not present in baseline.\n", name); return; } File localfile(name); if (localfile.exists()) { processFile(name); } else { if (forced_revision()) { File tempfile("forced_mergefile.tmp"); File rcsfile(dirs.baseline, dirs.subdir->path, "RCS", localfile.path); char line[LINE_LENGTH]; char* version = forced_revision_number ? forced_revision_number : rcsfile.getRevisionFromDate(forced_revision_date); sprintf(line, "co -q -p%s %s,v > %s", version, rcsfile.path, tempfile.path); if (execute(line)) { tempfile.un_link(); exit(-1); } localfile.become(tempfile, save); tempfile.un_link(); } else { File basefile(dirs.baseline, dirs.subdir->path, localfile.path); localfile.become(basefile, save); } } }
static void GenerateRulesFile(int rules, int widgets, const std::string& filename){ std::cout << "Loading base" << std::endl; /// /// load base file QFile basefile("../rules_base.txt"); if (!basefile.open(QFile::ReadOnly | QFile::Text)){ std::cout << "ERROR Loading base" << std::endl; return; } QTextStream in(&basefile); QString base_string = in.readAll(); std::cout << "base content = " << base_string.toStdString() << std::endl; /// /// create rules file QFile file(filename.c_str()); if ( file.open(QIODevice::ReadWrite)) { QTextStream stream( &file ); for (int i = 0; i < rules; i++){ for (int j = 0; j < widgets; j++){ stream << QString(base_string).replace("##rule##",QString::number(i)).replace("##widget##",QString::number(j)) << "\n"; //std::cout << "index = " << QString::number(i).toStdString() << std::endl; } } } file.close(); std::cout << "done." << std::endl; }
void prepareFileData() { //Предварительные подсчёты Byte tmpbyte[1]={0x00}; CKosFile basefile(filepathname); while (tmpbyte[0]!=0x14){ basefile.Read (tmpbyte,1); if (tmpbyte[0]==0x10) {questioncount++;}; } // basefile }
/* return basefile from requested path, based on wildcards in pattern eg. * for basefile_pattern("/customers/docs/123/abcd", "/customers/docs/(*)/(*)") * return "123/abcd" * for basefile_pattern("/customers/docs/abcd", "/customers/docs/(*)") * return "abcd" */ char *basefile_pattern(char *path, char *pattern) { char *base = NULL; int i; for (i=0;i<strlen(pattern);i++) { if (pattern[i] == '/' && pattern[i+1] == '*') { base = strdup(path+i+1); break; } } if (!base) { base = basefile(path); } return base; }
SpriteScene::SpriteScene(QGraphicsView *parent) : QGraphicsView(parent) { this->_scene = new QGraphicsScene(0,0,800,600); this->setScene(this->_scene); this->setSceneRect(0,0,795,595); this->setWindowFlags(Qt::FramelessWindowHint); QString basefile("base1.png"); MapInfo* mapinfo = new MapInfo(basefile); QString map1data("ansi1.mdt"); mapinfo->readMap(map1data); MapManager* manager1 = new MapManager(this->_scene); manager1->initMap(mapinfo); //this->_scene->createItemGroup(this->_scene->items())->setPos(100,100); }
void loadquestion(){ //Страшно корявая процедура генерации случайного номера вопроса // rtlSrand(kos_GetSystemClock() / 100000); int qcodee; int skipsleft; regenerate: qcodee=(rtlRand()%questioncount)+1; Byte inputbyte[1]={0x00}; //Первый проход - проверяем сложность и считаем длины строк tempquestionlength = 0; tempanswerAlength = 0; tempanswerBlength = 0; tempanswerClength = 0; tempanswerDlength = 0; skipsleft=qcodee; CKosFile basefile(filepathname); //Найдём то место, откуда начинается наш вопрос while (skipsleft>0){ basefile.Read (inputbyte,1); if (inputbyte[0]==0x10){ skipsleft--; } inputbyte[0]=0x00; } //Проверим сложность basefile.Read (inputbyte,1); // Нам нужно, чтобы сложность задаваемого вопроса соответствовала номеру задаваемого // в игре вопроса (на какую сумму мы играем; вопрос на 1000000 должен быть посложнее, // чем вопрос на 100 рублей :-))) if (inputbyte[0]==0x05) //Лёкгий вопрос { if (currentquestion > 5){ //Лёгкие вопросы - вопросы от 1 до 5 goto regenerate; //Если это уже 6 вопрос и более - ищем другой вопрос } } if (inputbyte[0]==0x06) //Средний вопрос { if ((currentquestion < 6)||(currentquestion > 10)){ //Средние вопросы - вопросы от 6 до 10 goto regenerate; } } if (inputbyte[0]==0x07) //Сложный вопрос { if (currentquestion < 11){ //Средние вопросы - вопросы от 11 до 15 goto regenerate; } } for (int counter=0; counter <currentquestion; counter++){ if (askedquestions[counter]==qcodee){goto regenerate;} } askedquestions[currentquestion-1]=qcodee; inputbyte[0]=0x00; //Считаем, сколько символов в вопросе tempquestionlength = 0; tempanswerAlength = 0; tempanswerBlength = 0; tempanswerClength = 0; tempanswerDlength = 0; while (inputbyte[0]!=0x01){ basefile.Read (inputbyte,1); tempquestionlength++; } while (inputbyte[0]!=0x02){ basefile.Read (inputbyte,1); tempanswerAlength++; } while (inputbyte[0]!=0x03){ basefile.Read (inputbyte,1); tempanswerBlength++; } while (inputbyte[0]!=0x04){ basefile.Read (inputbyte,1); tempanswerClength++; } while (inputbyte[0]!=0x08){ basefile.Read (inputbyte,1); tempanswerDlength++; } //Первый проход завершён!!!! if (needcleanup==true){ delete question; delete answerA; delete answerB; delete answerC; delete answerD; } needcleanup=true; tempquestion = new char[tempquestionlength+1]; tempanswerA = new char[tempanswerAlength+1]; tempanswerB = new char[tempanswerBlength+1]; tempanswerC = new char[tempanswerClength+1]; tempanswerD = new char[tempanswerDlength+1]; // ВТОРОЙ ПРОХОД: ФОРМИРУЕМ В ПАМЯТИ ВОПРОС И ВАРИАНТЫ ОТВЕТА CKosFile basefile2(filepathname); inputbyte[0]=0x00; skipsleft=qcodee; //Найдём то место, откуда начинается наш вопрос while (skipsleft>0){ basefile2.Read (inputbyte,1); if (inputbyte[0]==0x10){ skipsleft--; } inputbyte[0]=0x00; } basefile2.Read (inputbyte,1); // Это - сложность вопроса. Мы её уже проверили. //Читаем вопрос int currentbyte=0; while (inputbyte[0]!=0x01){ basefile2.Read (inputbyte,1); if (inputbyte[0]!=0x01){tempquestion[currentbyte]=inputbyte[0];} currentbyte++; } tempquestion[currentbyte]='\n'; //Читаем ответ A currentbyte=0; while (inputbyte[0]!=0x02){ basefile2.Read (inputbyte,1); if (inputbyte[0]!=0x02){tempanswerA[currentbyte]=inputbyte[0];} currentbyte++; } tempanswerA[currentbyte]='\n'; //Читаем ответ B currentbyte=0; while (inputbyte[0]!=0x03){ basefile2.Read (inputbyte,1); if (inputbyte[0]!=0x03){tempanswerB[currentbyte]=inputbyte[0];} currentbyte++; } tempanswerB[currentbyte]='\n'; //Читаем ответ C currentbyte=0; while (inputbyte[0]!=0x04){ basefile2.Read (inputbyte,1); if (inputbyte[0]!=0x04){tempanswerC[currentbyte]=inputbyte[0];} currentbyte++; } tempanswerC[currentbyte]='\n'; //Читаем ответ D currentbyte=0; while (inputbyte[0]!=0x08){ basefile2.Read (inputbyte,1); if (inputbyte[0]!=0x08){tempanswerD[currentbyte]=inputbyte[0];} currentbyte++; } tempanswerD[currentbyte]='\n'; basefile2.Read (inputbyte,1); // Это-правильный ответ tempcorrectanswer=inputbyte[0]; // ВСЁ!!!!!! ГОТОВО!!!! УРА! //Считали. Теперь надо перетасовать вопросы. questionlength = 0; answerAlength = 0; answerBlength = 0; answerClength = 0; answerDlength = 0; //Сам вопрос остаётся без изменения questionlength=tempquestionlength; question = new char[questionlength]; for (int cd=0; cd<questionlength; cd++){ question[cd]=tempquestion[cd]; } //Тасуем ответы bool answerAfree = true; bool answerBfree = true; bool answerCfree = true; bool answerDfree = true; int tmpvalue=0; //Первый вопрос regenA: tmpvalue = (rtlRand() % 4) +1; if (tmpvalue==1){ if (answerAfree==true){ answerAfree=false; answerAlength=tempanswerAlength; answerA= new char [answerAlength]; for (int c=0; c<answerAlength; c++){ answerA[c]=tempanswerA[c]; } if (tempcorrectanswer==0x01){correctanswer=0x01;} } else { goto regenA; } } if (tmpvalue==2){ if (answerBfree==true){ answerBfree=false; answerBlength=tempanswerAlength; answerB= new char [answerBlength]; for (int c=0; c<answerBlength; c++){ answerB[c]=tempanswerA[c]; } if (tempcorrectanswer==0x01){correctanswer=0x02;} } else { goto regenA; } } if (tmpvalue==3){ if (answerCfree==true){ answerCfree=false; answerClength=tempanswerAlength; answerC= new char [answerClength]; for (int c=0; c<answerClength; c++){ answerC[c]=tempanswerA[c]; } if (tempcorrectanswer==0x01){correctanswer=0x03;} } else { goto regenA; } } if (tmpvalue==4){ if (answerDfree==true){ answerDfree=false; answerDlength=tempanswerAlength; answerD= new char [answerDlength]; for (int c=0; c<answerDlength; c++){ answerD[c]=tempanswerA[c]; } if (tempcorrectanswer==0x01){correctanswer=0x04;} } else { goto regenA; } } //Второй вопрос regenB: tmpvalue = (rtlRand() % 4) +1; if (tmpvalue==1){ if (answerAfree==true){ answerAfree=false; answerAlength=tempanswerBlength; answerA= new char [answerAlength]; for (int c=0; c<answerAlength; c++){ answerA[c]=tempanswerB[c]; } if (tempcorrectanswer==0x02){correctanswer=0x01;} } else { goto regenB; } } if (tmpvalue==2){ if (answerBfree==true){ answerBfree=false; answerBlength=tempanswerBlength; answerB= new char [answerBlength]; for (int c=0; c<answerBlength; c++){ answerB[c]=tempanswerB[c]; } if (tempcorrectanswer==0x02){correctanswer=0x02;} } else { goto regenB; } } if (tmpvalue==3){ if (answerCfree==true){ answerCfree=false; answerClength=tempanswerBlength; answerC= new char [answerClength]; for (int c=0; c<answerClength; c++){ answerC[c]=tempanswerB[c]; } if (tempcorrectanswer==0x02){correctanswer=0x03;} } else { goto regenB; } } if (tmpvalue==4){ if (answerDfree==true){ answerDfree=false; answerDlength=tempanswerBlength; answerD= new char [answerDlength]; for (int c=0; c<answerDlength; c++){ answerD[c]=tempanswerB[c]; } if (tempcorrectanswer==0x02){correctanswer=0x04;} } else { goto regenB; } } //Третий вопрос regenC: tmpvalue = (rtlRand() % 4) +1; if (tmpvalue==1){ if (answerAfree==true){ answerAfree=false; answerAlength=tempanswerClength; answerA= new char [answerAlength]; for (int c=0; c<answerAlength; c++){ answerA[c]=tempanswerC[c]; } if (tempcorrectanswer==0x03){correctanswer=0x01;} } else { goto regenC; } } if (tmpvalue==2){ if (answerBfree==true){ answerBfree=false; answerBlength=tempanswerClength; answerB= new char [answerBlength]; for (int c=0; c<answerBlength; c++){ answerB[c]=tempanswerC[c]; } if (tempcorrectanswer==0x03){correctanswer=0x02;} } else { goto regenC; } } if (tmpvalue==3){ if (answerCfree==true){ answerCfree=false; answerClength=tempanswerClength; answerC= new char [answerClength]; for (int c=0; c<answerClength; c++){ answerC[c]=tempanswerC[c]; } if (tempcorrectanswer==0x03){correctanswer=0x03;} } else { goto regenC; } } if (tmpvalue==4){ if (answerDfree==true){ answerDfree=false; answerDlength=tempanswerClength; answerD= new char [answerDlength]; for (int c=0; c<answerDlength; c++){ answerD[c]=tempanswerC[c]; } if (tempcorrectanswer==0x03){correctanswer=0x04;} } else { goto regenC; } } //Четвёртый вопрос regenD: tmpvalue = (rtlRand() % 4) +1; if (tmpvalue==1){ if (answerAfree==true){ answerAfree=false; answerAlength=tempanswerDlength; answerA= new char [answerAlength]; for (int c=0; c<answerAlength; c++){ answerA[c]=tempanswerD[c]; } if (tempcorrectanswer==0x04){correctanswer=0x01;} } else { goto regenD; } } if (tmpvalue==2){ if (answerBfree==true){ answerBfree=false; answerBlength=tempanswerDlength; answerB= new char [answerBlength]; for (int c=0; c<answerBlength; c++){ answerB[c]=tempanswerD[c]; } if (tempcorrectanswer==0x04){correctanswer=0x02;} } else { goto regenD; } } if (tmpvalue==3){ if (answerCfree==true){ answerCfree=false; answerClength=tempanswerDlength; answerC= new char [answerClength]; for (int c=0; c<answerClength; c++){ answerC[c]=tempanswerD[c]; } if (tempcorrectanswer==0x04){correctanswer=0x03;} } else { goto regenD; } } if (tmpvalue==4){ if (answerDfree==true){ answerDfree=false; answerDlength=tempanswerDlength; answerD= new char [answerDlength]; for (int c=0; c<answerDlength; c++){ answerD[c]=tempanswerD[c]; } if (tempcorrectanswer==0x04){correctanswer=0x04;} } else { goto regenD; } } delete tempquestion; delete tempanswerA; delete tempanswerB; delete tempanswerC; delete tempanswerD; }
void processFile(char* name) { stringNode* node; if (node = table.lookup(name)) { if (!node->isMarked()) { node->mark(); File localfile(name); if (node->version == remove_keyword) { if (verbose) { fprintf(stderr, "File %s keyword is %s; removing\n", name, node->version); } localfile.remove(); } else { File basefile(dirs.baseline, dirs.subdir->path, localfile.path); if (node->version == copy_keyword) { if (verbose) { fprintf(stderr, "File %s keyword is %s; copying if outdated\n", name, node->version); } localfile.becomeIfOutdated(basefile, save); } else { // The file must have a revision char* revision; switch (getRevision(localfile.path, &revision)) { case GOT_REVISION: if (verbose) { fprintf(stderr, "Testing revisions of %s:\n" " local: \"%s\"; baseline: \"%s\"...", localfile.path, revision, node->version); } char* version; if (forced_revision()) { version = forced_revision_number ? forced_revision_number : basefile.getRevisionFromDate(forced_revision_date); } else version = node->version; switch (cmpRevisions(revision, version)) { case EQUAL: if (verbose) { fprintf(stderr, "same; no action.\n"); } break; case LESS_THAN: { if (verbose) { fprintf(stderr, "revision is behind; merge.\n"); } File rcsfile(dirs.baseline, dirs.subdir->path, "RCS", localfile.path); if (forced_revision()) { File tempfile("forced_mergefile.tmp"); char line[LINE_LENGTH]; sprintf(line, "co -q -p%s %s,v > %s", version, rcsfile.path, tempfile.path); if (execute(line)) { tempfile.un_link(); exit(-1); } localfile.merge(tempfile, rcsfile, revision, version); tempfile.un_link(); } else { localfile.merge(basefile, rcsfile, revision, version); } } break; case GREATER_THAN: if (verbose) { fprintf(stderr, "\n"); } fprintf(stderr, "%s has a newer revision number than baseline.\n", localfile.path); localfile.becomeIfConfirmed(basefile, 1); break; case FAILED: if (verbose) { fprintf(stderr, "\n"); } fprintf(stderr, "%s has a conflicting revision number with baseline.\n", localfile.path); localfile.becomeIfConfirmed(basefile, 1); break; default: fprintf(stderr, "unexpected cmpRevisions result"); exit(-1); } break; case NO_REVISION: if (strcmp(node->version, "none") == 0) { // baseline has no revision; copy if outdated if (verbose) { fprintf(stderr, "%s has no revision number; copying if outdated\n", localfile.path); } localfile.becomeIfOutdated(basefile, 1); } else { // baseline does have a revision num, but local file doesn't; // ask! fprintf(stderr, "%s has no revision number (baseline's is %s).\n", localfile.path, node->version); localfile.becomeIfConfirmed(basefile, 1); } break; default: fprintf(stderr, "getRevision failed on %s\n", name); localfile.becomeIfConfirmed(basefile, 1); break; } } } } else { if (verbose) { fprintf(stderr, "File %s is marked; ignoring\n", name); } } } else { if (verbose) { fprintf(stderr, "File %s not found in table; ignoring\n", name); } } }