Example #1
0
int main (int argc, char * argv[])
{
  int T[SIZE], max, diff;
  double start, stop;
  register int i, j;

  /* keep the starting time */
  start = startChrono ();

  /*algo a gogo*/
  retour * res;
  graphe_t * gr = creation_arbre("DLP_170.dat");
  res = dijkstra(gr,1,170);
  for(int i=0;i<169;i++)
     cout <<"label: " << res[i].label << " prec: " << res[i].prec << " dist: " << res[i].distance << endl;
  /*fin algo*/

  /* stop the chrono */
  stop = stopChrono (start);

  /* display the elapsed time */
  printf("algo: max = %8d in %.2f s\n", max, stop);

  return EXIT_SUCCESS;
}
Example #2
0
void wait(u64 amount)
{
    startChrono();

    u64 initialValue = chrono();

    while(chrono() - initialValue < amount);
}
Example #3
0
bool playGame(Affichage A, Damier *map, Snake *snake, Sound sound)
{
	int end = 0;
	bool win = FALSE;
	Position newPos = initPosition();
	Input input = initInput();
	Chrono chrono = initChrono();
	Timer timer = initTimer();
	
	
	setProiesToMap(map);
	
	drawTile(A, TILE_TITLE);
	drawTextChrono(chrono, A);
	drawMap(A, *map, newPosition(MAXCASES/2 + 3,MAXCASES/2), *snake);

	startChrono(&chrono);
	while (1)
	{
		
		setTimer(&timer);
		newPos = updatePositions(map, snake, &input);
		
		if (input.end)
			break;

		if (testPosMap(newPos))
		{
			end = addPositionSnake(map, snake, newPos, sound);
			if (end)
			{
				win = FALSE;
				break;
			}
		}
		
		setPositionsToMap(map, snake);
		drawChrono(chrono, A);
		drawMap(A, *map, newPos, *snake);
		
		if(endChrono(chrono))
		{
			win = FALSE;
			break;
		}
		
		if (endGame(map))
		{
			win = TRUE;
			break;
		}
		
		reguleFPS(&timer);
	}
	
	deleteChrono(&chrono);
	return win;
}
Example #4
0
void chrono(u32 seconds)
{
    static u64 startingTicks = 0;

    if(!startingTicks) startChrono(0);

    u64 res;

    do
    {
        res = 0;
        for(u32 i = 0; i < 4; i++) res |= REG_TIMER_VAL(i) << (16 * i);
    }
    while(res - startingTicks < seconds * TICKS_PER_SEC);

    if(!seconds) startingTicks = res;
}
Example #5
0
u32 waitInput(bool isMenu)
{
    static u64 dPadDelay = 0ULL;
    u64 initialValue = 0ULL;
    u32 key,
        oldKey = HID_PAD;

    if(isMenu)
    {
        dPadDelay = dPadDelay > 0ULL ? 87ULL : 143ULL;
        startChrono();
        initialValue = chrono();
    }

    while(true)
    {
        key = HID_PAD;

        if(!key)
        {
            if((i2cReadRegister(I2C_DEV_MCU, 0x10) & 1)== 1) mcuPowerOff();
            oldKey = 0;
            dPadDelay = 0;
            continue;
        }

        if(key == oldKey && (!isMenu || (!(key & DPAD_BUTTONS) || chrono() - initialValue < dPadDelay))) continue;

        //Make sure the key is pressed
        u32 i;
        for(i = 0; i < 0x13000 && key == HID_PAD; i++);
        if(i == 0x13000) break;
    }

    return key;
}
Example #6
0
int copyObjectToActor(int flag2, int var1, int foundName, int16 flag, int x, int y, int z, int stage, int room, int alpha, int beta, int gamma, int var2, int var3, int var4, int var5) {
	int i;
	int j;
	actorStruct *actorPtr = actorTable;
	char *bodyPtr;
	ZVStruct *zvPtr;

	for(i = 0; i < NUM_MAX_ACTOR; i++) {
		if(actorPtr->field_0 == -1)
			break;

		actorPtr++;
	}

	if(i == NUM_MAX_ACTOR)
		return -1;

	currentProcessedActorPtr = actorPtr;
	currentProcessedActorIdx = i;

	actorPtr->bodyNum = flag2;
	actorPtr->flags = flag;
	actorPtr->stage = stage;
	actorPtr->room = room;
	actorPtr->worldX = actorPtr->roomX = x;
	actorPtr->worldY = actorPtr->roomY = y;
	actorPtr->worldZ = actorPtr->roomZ = z;

	if(room != currentDisplayedRoom) {
		actorPtr->worldX -= (int16)((roomDataTable[currentDisplayedRoom].worldX - roomDataTable[actorPtr->room].worldX) * 10);
		actorPtr->worldY += (int16)((roomDataTable[currentDisplayedRoom].worldY - roomDataTable[actorPtr->room].worldY) * 10);
		actorPtr->worldZ += (int16)((roomDataTable[currentDisplayedRoom].worldZ - roomDataTable[actorPtr->room].worldZ) * 10);
	}

	actorPtr->alpha = alpha;
	actorPtr->beta = beta;
	actorPtr->gamma = gamma;

	actorPtr->dynFlags = 1;

	actorPtr->ANIM = var2;
	actorPtr->FRAME = var3;

	actorPtr->field_40 = var4;
	actorPtr->field_42 = var5;

	actorPtr->END_FRAME = 1;
	actorPtr->END_ANIM = 1;
	actorPtr->field_44 = -1;
	actorPtr->field_46 = 0;
	actorPtr->field_48 = -1;

	actorPtr->modX = 0;
	actorPtr->modY = 0;
	actorPtr->modZ = 0;

	for(j = 0; j < 3; j++) {
		actorPtr->COL[j] = -1;
	}

	actorPtr->COL_BY = -1;
	actorPtr->HARD_DEC = -1;
	actorPtr->HARD_COL = -1;

	if(g_fitd->getGameType() != GType_AITD1) {
		actorPtr->hardMat = -1;
	}

	actorPtr->rotate.oldAngle = 0;
	actorPtr->rotate.newAngle = 0;
	actorPtr->rotate.param = 0;

	actorPtr->field_60.oldAngle = 0;
	actorPtr->field_60.newAngle = 0;
	actorPtr->field_60.param = 0;

	actorPtr->falling = 0;

	actorPtr->field_72 = 0;

	actorPtr->speed = 0;

	actorPtr->trackMode = 0;
	actorPtr->trackNumber = -1;

	actorPtr->animActionType = 0;
	actorPtr->HIT = -1;
	actorPtr->HIT_BY = -1;

	if(flag2 != -1) {
		bodyPtr = listBody->get(actorPtr->bodyNum);

		if(var2 != -1) {
			char *animPtr = listAnim->get(var2);

			initAnimInBody(var3, animPtr, bodyPtr);

			actorPtr->field_4C = getAnimParam(animPtr);
			actorPtr->END_ANIM = 0;
			actorPtr->flags |= 1;

			//          computeScreenBox(actorPtr->field_22 + actorPtr->field_5A, actorPtr->field_24 + actorPtr->field_5C, actorPtr->anim + actorPtr->field_5E, actorPtr->alpha, actorPtr->beta, actorPtr->gamma, bodyPtr);

			if(BBox3D1 < 0)
				BBox3D1 = 0;

			if(BBox3D3 > 319)
				BBox3D3 = 319;

			if(BBox3D2 < 0)
				BBox3D2 = 0;

			if(BBox3D4 > 199)
				BBox3D4 = 199;

			actorPtr->field_14 = BBox3D1;
			actorPtr->field_16 = BBox3D2;
			actorPtr->field_18 = BBox3D3;
			actorPtr->field_1A = BBox3D4;
		} else {
			if(!(actorPtr->flags & 4)) {
				actorPtr->flags &= 0xFFFE;
			}
		}
	}

	startChrono(&actorPtr->ROOM_CHRONO);
	startChrono(&actorPtr->CHRONO);

	zvPtr = &actorPtr->zv;

	switch(var1) {
	case 0: {
		if(flag2 != -1) {
			getZvMax(bodyPtr, zvPtr);
		} else {
			makeDefaultZV(zvPtr);
		}
		break;
	}
	case 1: {
		if(flag2 != -1) {
			getZvNormal(bodyPtr, zvPtr);
		} else {
			makeDefaultZV(zvPtr);
		}
		break;
	}
	case 2: {
		if(flag2 != -1) {
			getZvCube(bodyPtr, zvPtr);
		} else {
			makeDefaultZV(zvPtr);
		}
		break;
	}
	case 3: {
		if(flag2 != -1) {
			getZvRot(bodyPtr, zvPtr, alpha, beta, gamma);
		} else {
			makeDefaultZV(zvPtr);
		}
		break;
	}
	case 4: {
		if(g_fitd->getGameType() < GType_AITD3) {
			char *roomDataPtr = (char *)getRoomData(room);
			int numElements;
			int j;

			roomDataPtr += *(int16 *)roomDataPtr;

			numElements = *(int16 *)roomDataPtr;
			roomDataPtr += 2;

			for(j = 0; j < numElements; j++) {
				if(*(int16 *)(roomDataPtr + 0xE) == 9) {
					if(*(int16 *)(roomDataPtr + 0xC) == foundName) {
						int tempX;
						int tempY;
						int tempZ;

						zvPtr->ZVX1 = (int16)READ_LE_UINT16(roomDataPtr + 0x00);
						zvPtr->ZVX2 = (int16)READ_LE_UINT16(roomDataPtr + 0x02);
						zvPtr->ZVY1 = (int16)READ_LE_UINT16(roomDataPtr + 0x04);
						zvPtr->ZVY2 = (int16)READ_LE_UINT16(roomDataPtr + 0x06);
						zvPtr->ZVZ1 = (int16)READ_LE_UINT16(roomDataPtr + 0x08);
						zvPtr->ZVZ2 = (int16)READ_LE_UINT16(roomDataPtr + 0x0A);

						x = 0;
						y = 0;
						z = 0;

						tempX = ((*(int16 *)roomDataPtr) + (*(int16 *)(roomDataPtr + 2))) / 2;
						actorPtr->worldX = tempX;
						actorPtr->roomX = tempX;

						tempY = ((*(int16 *)(roomDataPtr + 4)) + (*(int16 *)(roomDataPtr + 6))) / 2;
						actorPtr->worldY = tempY;
						actorPtr->roomY = tempY;

						tempZ = ((*(int16 *)(roomDataPtr + 8)) + (*(int16 *)(roomDataPtr + 0xA))) / 2;
						actorPtr->worldZ = tempZ;
						actorPtr->roomZ = tempZ;

						if(room != currentDisplayedRoom) {
							actorPtr->worldX = (roomDataTable[currentDisplayedRoom].worldX - roomDataTable[room].worldX) * 10;
							actorPtr->worldY = (roomDataTable[currentDisplayedRoom].worldY - roomDataTable[room].worldY) * 10;
							actorPtr->worldZ = (roomDataTable[currentDisplayedRoom].worldZ - roomDataTable[room].worldZ) * 10;
						}

						break;
					}
				}

				roomDataPtr += 0x10;
			}

			if(j == numElements) {
				makeDefaultZV(zvPtr);
			}
		}

		break;
	}
	default: {
		warning("Unsupported ZV type in copyObjectToActor\n");
		error("var1: %d\n", var1);
		ASSERT(0);
		break;
	}
	}

	zvPtr->ZVX1 += x;
	zvPtr->ZVX2 += x;

	zvPtr->ZVY1 += y;
	zvPtr->ZVY2 += y;

	zvPtr->ZVZ1 += z;
	zvPtr->ZVZ2 += z;

	return(i);
}
void SQLCONN::phrasea_query(char *sql, Cquerytree2Parm *qp)
{
    qp->sqlconn->connect();
    MYSQL *xconn = (MYSQL *)(qp->sqlconn->get_native_conn());
    /*
    	SQLCONN xconn(this->host, this->port, this->user, this->passwd, this->dbname);
    	xconn.connect();
    */
    CHRONO chrono;

    std::pair < std::set<PCANSWER, PCANSWERCOMPRID_DESC>::iterator, bool> insert_ret;

//	mysql_thread_init();

    startChrono(chrono);

    // zend_printf("SQL:%s<br/>\n", sql);

    MYSQL_STMT *stmt;
//	if((stmt = mysql_stmt_init(&(this->mysql_connx))))
    if((stmt = mysql_stmt_init(xconn)))
    {
//		qp->sqlmutex->lock();
        if(mysql_stmt_prepare(stmt, sql, strlen(sql)) == 0)
        {

            // Execute the SELECT query
            if(mysql_stmt_execute(stmt) == 0)
            {
                qp->n->time_sqlQuery = stopChrono(chrono);

                // Bind the result buffers for all columns before fetching them
                MYSQL_BIND bind[7];
                unsigned long length[7];
                my_bool is_null[7];
                my_bool error[7];
                long int_result[7];
                unsigned char sha256[65];
                char skey[201];

                memset(bind, 0, sizeof (bind));

                // every field is int...
                for(int i = 0; i < 7; i++)
                {
                    length[i] = 0;
                    is_null[i] = true; // so each not fetched column (not listed in sql) will be null
                    error[i] = false;
                    int_result[i] = 0;
                    // INTEGER COLUMN(S)
                    bind[i].buffer_type = MYSQL_TYPE_LONG;
                    bind[i].buffer = (char *) (&int_result[i]);
                    bind[i].is_null = &is_null[i];
                    bind[i].length = &length[i];
                    bind[i].error = &error[i];
                }
                // ... except :

                // sha256 column : 256 bits
                memset(sha256, 0, sizeof (sha256));
                bind[SQLFIELD_SHA256].buffer_type = MYSQL_TYPE_STRING;
                bind[SQLFIELD_SHA256].buffer_length = 65;
                bind[SQLFIELD_SHA256].buffer = (char *) sha256;

                // skey column : 100 chars utf8
                memset(skey, 0, sizeof (skey));
                bind[SQLFIELD_SKEY].buffer_type = MYSQL_TYPE_STRING;
                bind[SQLFIELD_SKEY].buffer_length = 201;
                bind[SQLFIELD_SKEY].buffer = (char *) skey;

                // Bind the result buffers
                if(mysql_stmt_bind_result(stmt, bind) == 0)
                {
                    bool ok_to_fetch = true;
                    // Now buffer all results to client (optional step)
                    startChrono(chrono);
                    ok_to_fetch = (mysql_stmt_store_result(stmt) == 0);
                    qp->n->time_sqlStore = stopChrono(chrono);

                    //					if(mutex_locked)
                    //					{
                    //						pthread_mutex_unlock(qp->sqlmutex);
                    //						mutex_locked = false;
                    //					}

                    // fetch results
                    if(ok_to_fetch)
                    {
                        long rid;
                        long lastrid = -1;

                        startChrono(chrono);
                        while(mysql_stmt_fetch(stmt) == 0)
                        {
                            rid = int_result[SQLFIELD_RID];

                            CANSWER *answer;
                            if((answer = new CANSWER()))
                            {
                                answer->rid = rid;
                                insert_ret = qp->n->answers.insert(answer);
                                if(insert_ret.second == false)
                                {
                                    // this rid already exists
                                    delete answer;
                                    answer = *(insert_ret.first);
                                }
                                else
                                {
                                    // n->nbranswers++;

                                    // a new rid
                                    answer->cid = int_result[SQLFIELD_CID];

                                    if(!is_null[SQLFIELD_SHA256])
                                        answer->sha2 = new CSHA(sha256);

                                    if(!is_null[SQLFIELD_SKEY])
                                    {
                                        skey[length[SQLFIELD_SKEY]] = '\0';
                                        switch(qp->sortMethod)
                                        {
                                        case SORTMETHOD_STR:
                                            answer->sortkey.s = new std::string(skey);
                                            break;
                                        case SORTMETHOD_INT:
#ifdef PHP_WIN32
                                            answer->sortkey.l = _strtoui64(skey, NULL, 10);
#else
                                            answer->sortkey.l = atoll(skey);
#endif
                                            break;
                                        }
                                    }
                                }
                            }

                            if(!is_null[SQLFIELD_IW] && answer)
                            {
                                CHIT *hit;
                                if(hit = new CHIT(int_result[SQLFIELD_IW]))
                                {
                                    if(!(answer->firsthit))
                                        answer->firsthit = hit;
                                    if(answer->lasthit)
                                        answer->lasthit->nexthit = hit;
                                    answer->lasthit = hit;
                                }
                            }
                            if(!is_null[SQLFIELD_HITSTART] && !is_null[SQLFIELD_HITLEN] && answer)
                            {
                                CSPOT *spot;
                                if(spot = new CSPOT(int_result[SQLFIELD_HITSTART], int_result[SQLFIELD_HITLEN]))
                                {
                                    if(!(answer->firstspot))
                                        answer->firstspot = spot;
                                    if(answer->lastspot)
                                        answer->lastspot->_nextspot = spot;
                                    answer->lastspot = spot;
                                }
                            }
                        }
                        qp->n->time_sqlFetch = stopChrono(chrono);
                    }
                    else // store error
                    {
                        zend_printf("ERR: line %d : %s<br/>\n", __LINE__, mysql_stmt_error(stmt));
                    }
                }
                else // bind error
                {
                    zend_printf("ERR: line %d : %s<br/>\n", __LINE__, mysql_stmt_error(stmt));
                }
            }
            else // execute error
            {
                zend_printf("ERR: line %d : %s<br/>\n", __LINE__, mysql_stmt_error(stmt));
            }
        }
        else // prepare error
        {
            zend_printf("ERR: line %d : %s<br/>\n%s<br/>\n", __LINE__, mysql_stmt_error(stmt), sql);
        }

//		mysql_stmt_close(stmt);
//		qp->sqlmutex->unlock();
    }
//	mysql_thread_end();
}