Esempio n. 1
0
		GIMBLE_HANDLE SAP::add(CollisionObject *o)
		{
			SAPObject *obj = new SAPObject(o);

			GIMBLE_HANDLE handle = mFirstFreeObjectIndex;
			mObjects[handle] = obj;
			obj->mIndex = handle;

			while (mObjects[mFirstFreeObjectIndex] && mFirstFreeObjectIndex < mMaxEntries/2) mFirstFreeObjectIndex++;

			mNumObjects++;
			insertEntries(obj);

			return handle;
		}
Esempio n. 2
0
void
AccountListWidget::updateEntries( const QModelIndex& topLeft, const QModelIndex& bottomRight )
{
    for( int row = topLeft.row(); row <= bottomRight.row(); ++row )
    {
        QPersistentModelIndex idx( m_model->index( row, 0 ) );

        int newCount = idx.data( Tomahawk::Accounts::AccountModel::ChildrenOfFactoryRole )
                            .value< QList< Tomahawk::Accounts::Account* > >().count();

        if( m_entries.value( idx ).count() == newCount )
        {
            updateEntry( idx );
        }
        else
        {
            removeEntries( idx.parent(), idx.row(), idx.row() );
            insertEntries( idx.parent(), idx.row(), idx.row() );
        }
    }
}
Esempio n. 3
0
int main()
{
    int scan1;

    int eNentry;
    int eAentry;
    int eSentry;
    int dAentry;

    int eage;
    float esal;
    char edname[40];

    empName[9] = '\0';
    char fltname[40];


    int recordid = 1;

    char errStr[200];

    int* ivalue = NULL;
    char* cvalue = NULL;


    AM_Init();

    strcpy(empAge, "TestDb3");




    if (AM_CreateIndex(empAge, STRING, sizeof(empName) - 1, INTEGER, sizeof(int)) != AME_OK) {
        sprintf(errStr, "Error in AM_CreateIndex called on %s \n", empAge);
        AM_PrintError(errStr);
        return 1;
    }

    if ((eAentry = AM_OpenIndex(empAge)) < 0) {
        sprintf(errStr, "Error in AM_OpenIndex called on %s \n", empAge);
        AM_PrintError(errStr);
        return 1;
    }

    srand(time(NULL));
    int i, j;
    recordid = 0;
    int count = 0;
    for (i = 1; i <= 100000; ++i) {
        for (j = 0; j < 9; ++j) {
            empName[j] = (char) abs(rand()%(122-97) + 97);
        }
        if(empName[0] == 'a')
            count++;
        insertEntries(eAentry, empName, ++recordid);
//        printf("record id : %d\n", recordid);
    }
    strcpy(empName, "bla");
    insertEntries(eAentry, empName, ++recordid);

    printf("names starting with a : %d\n", count);
    empName[0] = 'b';
    empName[1] = '\0';
    int scan = AM_OpenIndexScan(eAentry, LESS_THAN, empName);
    i = 0;
    while(AM_FindNextEntry(scan) != NULL)
        i++;
    printf("Names with less than b : %d\n", i);
    AM_CloseIndexScan(scan);

    empName[0] = 'b';
    empName[1] = '\0';
    scan = AM_OpenIndexScan(eAentry, GREATER_THAN, empName);
    i = 0;
    while(AM_FindNextEntry(scan) != NULL)
        i++;
    printf("Names with more than b : %d\n", i);
    AM_CloseIndexScan(scan);

    strcpy(empName, "bla");
    scan = AM_OpenIndexScan(eAentry, EQUAL, empName);
    i = 0;
    int * kappa = NULL;
    while((kappa = (int *) AM_FindNextEntry(scan) )!= NULL)
    {
        printf("%d\n", *kappa);
        i++;
    }
    printf("Names equal with bla : %d\n", i);
    AM_CloseIndexScan(scan);


    printf("record id : %d\n", recordid);

    AM_CloseIndex(eAentry);
    AM_DestroyIndex(empAge);
    return 0;
}
Esempio n. 4
0
Status ChunkIndex::buildChunkIndex(unsigned chunkType) {
	if(idTable == NULL) {
		idTable = new MemoryBuffer(HASH_CAPACITY);
		tableSize = idTable->getSize() / sizeof(unsigned);
		offsetTable = new MemoryBuffer(HASH_CAPACITY);
		idTableEntries = (ID*)idTable->getBuffer();
		offsetTableEntries = (ID*)offsetTable->getBuffer();
		tableSize = 0;
	}

	const uchar* begin, *limit, *reader;
	ID x,y;

	if(chunkType == 1) {
		reader = chunkManager.getStartPtr(1);
		begin = reader;
		if(chunkManager.getStartPtr(chunkType) == chunkManager.getEndPtr(chunkType))
			return OK;

		x = 0;
		reader = Chunk::readXId(reader, x);
		insertEntries(x, 0);

		reader = reader + (int)MemoryBuffer::pagesize;

		limit = chunkManager.getEndPtr(1);
		while(reader < limit) {
			x = 0;
			//const char* temp = this->backSkip(reader);
			const uchar* temp = Chunk::skipBackward(reader);
			Chunk::readXId(temp, x);
			insertEntries(x, temp - begin);

			reader = reader + (int)MemoryBuffer::pagesize;
		}

		//reader = backSkip(limit);
		reader = Chunk::skipBackward(limit);
		x = 0;
		Chunk::readXId(reader, x);
		insertEntries(x, reader - begin);
	}

	if(chunkType == 2) {
		reader = chunkManager.getStartPtr(2);
		begin = reader;
		if(chunkManager.getStartPtr(chunkType) == chunkManager.getEndPtr(chunkType))
			return OK;

		x = 0; y = 0;
		Chunk::readYId(Chunk::readXId(reader, x), y);
		insertEntries(x + y, 0);

		reader = reader + (int)MemoryBuffer::pagesize;

		limit = chunkManager.getEndPtr(2);
		while(reader < limit) {
			x = 0; y = 0;
			//const char* temp = this->backSkip(reader);
			const uchar* temp = Chunk::skipBackward(reader);
			Chunk::readYId(Chunk::readXId(temp, x), y);
			insertEntries(x + y, temp - begin);

			reader = reader + (int)MemoryBuffer::pagesize;
		}

		x= y = 0;
		//reader = backSkip(limit);
		reader = Chunk::skipBackward(limit);
		Chunk::readYId(Chunk::readXId(reader, x), y);
		insertEntries(x + y, reader - begin);
	}

	return OK;
}