Exemple #1
0
int PageDirectory::nextRecordPageID(FileHandle &fh, int pageid){
    int pgentry = -1;
    if (pageid == 0)
        while (1) {
            if (get_pgnum() != 0)
                return  get_pgid(0);
            if (get_next() == 0)
                return -1;
            moveToNext(fh);
        }
    if((pgentry = locateRecordPage(fh, pageid)) == -1)
        return -1;
    if (pgentry < get_pgnum() - 1)
        return get_pgid(pgentry + 1);
    while (get_next() != 0) {
        moveToNext(fh);
        if (get_pgnum() != 0)
            return get_pgid(0);
    }
    return -1;
}
Exemple #2
0
int PageDirectory::firstPageWithFreelen(FileHandle& fh, int len){
    while(1){
        int num = get_pgnum();
        for (int i = 0; i < num; i++)
            if (get_pgfreelen(i) > len)
                return get_pgid(i);
        if(get_next() == 0)
            return -1;
        moveToNext(fh);
    }
    return -1;
}
Exemple #3
0
int PageDirectory::allocRecordPage(FileHandle &fh){
    int allocated = -1;
    while (get_pgnum() == PageDirectory::MaximunEntryNum() &&
           get_next() != 0)
        moveToNext(fh);
    
    char newrp[PAGE_SIZE], newpd_buffer[PAGE_SIZE];
    memset(newrp, 0, sizeof(newrp)); //all zeros is ok
    memset(newpd_buffer, 0, sizeof(newpd_buffer)); //all zeros is ok
    RecordPage rp(newrp);
    fh.appendPage(newrp);
    allocated = (int) (fh.getNumberOfPages() - 1);
    
    if (get_next() == 0 && get_pgnum() == PageDirectory::MaximunEntryNum()) {
        fh.appendPage(newpd_buffer);
        set_next(fh.getNumberOfPages() - 1);
        moveToNext(fh);
    }
    set_pgid(get_pgnum(), allocated);
    set_pgfreelen(get_pgnum(), rp.getFreelen());
    set_pgnum(get_pgnum() + 1);
    return allocated;
}
void imprimeDicionario(Dicionario **param){
  
  Dicionario *aux = *param;
  
  printf("aux %d\n", (int)aux);
  
  if(aux==NULL){
    printf("Nao existem palavras na lista\n");
  }else do{
    
    printf("%d\t%s\n",aux->palavra,aux->palavra);          
  }while(moveToNext(&aux));
  system("pause");
}
Exemple #5
0
int PageDirectory::locateRecordPage(FileHandle &fh, int pageid){
    int pgentry = -1;
    while (1) {
        for (int i = 0; i < get_pgnum(); i++)
            if (get_pgid(i) == pageid) {
                pgentry = i;
                break;
            }
        if (pgentry != -1)
            break;
        if (get_next() == 0)
            return -1;
        moveToNext(fh);
    }
    return pgentry;
}
void DrawableSelector::handleInput(SDL_Event event) {
    SDL_Keycode keycode = event.key.keysym.sym;
    SDL_Scancode scancode = event.key.keysym.scancode;

    switch(event.type){
        case SDL_KEYDOWN:
            if (scancode == SDL_SCANCODE_RIGHT) {
                moveToNext();
            } else if (scancode == SDL_SCANCODE_LEFT) {
                moveToPrevious();
            }
        break;

        default:
        break;
    }
}
void SwitchEventsWidget::setEventsCursor(const QSharedPointer<EventsCursor> &eventsCursor)
{
    EventsCursor *oldCursor = m_eventsCursor.data();
    if (m_eventsCursor.data())
    {
        disconnect(m_previousButton, 0, oldCursor, 0);
        disconnect(m_nextButton, 0, oldCursor, 0);
        disconnect(oldCursor, 0, this, 0);
    }

    m_eventsCursor = eventsCursor;

    if (m_eventsCursor)
    {
        connect(m_previousButton, SIGNAL(clicked()), m_eventsCursor.data(), SLOT(moveToPrevious()));
        connect(m_nextButton, SIGNAL(clicked()), m_eventsCursor.data(), SLOT(moveToNext()));
        connect(eventsCursor.data(), SIGNAL(eventSwitched(EventData*)), this, SLOT(updateButtonsState()));
    }

    updateButtonsState();
}
void CListBox::moveToPos(size_t which)
{
	//Calculate new position
	size_t maxPossible;
	if (totalSize > items.size())
		maxPossible = totalSize - items.size();
	else
		maxPossible = 0;

	size_t newPos = std::min(which, maxPossible);

	//If move distance is 1 (most of calls from Slider) - use faster shifts instead of resetting all items
	if (first - newPos == 1)
		moveToPrev();
	else if (newPos - first == 1)
		moveToNext();
	else if (newPos != first)
	{
		first = newPos;
		reset();
	}
}