コード例 #1
0
ファイル: UpdateFiles.cpp プロジェクト: AdamSpitz/self
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);
        }
    }
}
コード例 #2
0
    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;
    }
コード例 #3
0
ファイル: wwtbam.cpp プロジェクト: ashmew2/kolibriosSVN
void prepareFileData() { //Предварительные подсчёты
	Byte tmpbyte[1]={0x00};
   CKosFile basefile(filepathname);

   while (tmpbyte[0]!=0x14){
		basefile.Read (tmpbyte,1);
		if (tmpbyte[0]==0x10) {questioncount++;};
   }
  // basefile
}
コード例 #4
0
/* 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;
}
コード例 #5
0
ファイル: spritescene.cpp プロジェクト: wan2004/sprite-map
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);
}
コード例 #6
0
ファイル: wwtbam.cpp プロジェクト: ashmew2/kolibriosSVN
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;
}
コード例 #7
0
ファイル: UpdateFiles.cpp プロジェクト: AdamSpitz/self
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);
        }
    }
}