void HistoryScrollBuffer::addCellsVector(const QVector<Character>& cells) { _head++; if ( _usedLines < _maxLineCount ) _usedLines++; if ( _head >= _maxLineCount ) { _head = 0; } _historyBuffer[bufferIndex(_usedLines-1)] = cells; _wrappedLine[bufferIndex(_usedLines-1)] = false; }
bool HistoryScrollBuffer::isWrappedLine(int lineNumber) { Q_ASSERT( lineNumber >= 0 && lineNumber < _maxLineCount ); if (lineNumber < _usedLines) { //kDebug() << "Line" << lineNumber << "wrapped is" << _wrappedLine[bufferIndex(lineNumber)]; return _wrappedLine[bufferIndex(lineNumber)]; } else return false; }
int HistoryScrollBuffer::getLineLen(int lineNumber) { Q_ASSERT( lineNumber >= 0 && lineNumber < _maxLineCount ); if ( lineNumber < _usedLines ) { return _historyBuffer[bufferIndex(lineNumber)].size(); } else { return 0; } }
void IndexPage::loadPage(BufferManager* manager) { Buffer* buffer = manager->getBuffer(bufferIndex()); buffer->seek(bufferPos()); __int32 bsize = buffer->readInt(); char* data = buffer->readChars(); MemoryStream* helperStream = new MemoryStream(data, bsize); helperStream->seek(0); helperStream->readInt(); // BUCKET_MAX_ELEMENTS size = helperStream->readInt(); IndexPage* tempPointer = NULL; for (int x = 0; x < BUCKET_MAX_ELEMENTS; x++) { Index* index = retrieveIndexElement(helperStream); elements[x] = index; tempPointer = retrievePointer(helperStream); pointers[x] = tempPointer; if (tempPointer != NULL) { tempPointer->parentElement = this; } } // Recovers the last pointer tempPointer = retrievePointer(helperStream); pointers[BUCKET_MAX_ELEMENTS] = tempPointer; if (tempPointer != NULL) { tempPointer->parentElement = this; } // Recovers siblings leftSibling = retrievePointer(helperStream); rightSibling = retrievePointer(helperStream); setLoaded(true); /* for (int x = 0; x <= BUCKET_MAX_ELEMENTS; x++) { IndexPage* temp = page->pointers[x]; if ((temp != NULL) && (temp->bufferIndex() > -1)) { loadPage(temp); } } */ delete helperStream; }
void HistoryScrollBuffer::setMaxNbLines(unsigned int lineCount) { HistoryLine* oldBuffer = _historyBuffer; HistoryLine* newBuffer = new HistoryLine[lineCount]; for ( int i = 0 ; i < qMin(_usedLines,(int)lineCount) ; i++ ) { newBuffer[i] = oldBuffer[bufferIndex(i)]; } _usedLines = qMin(_usedLines,(int)lineCount); _maxLineCount = lineCount; _head = ( _usedLines == _maxLineCount ) ? 0 : _usedLines-1; _historyBuffer = newBuffer; delete[] oldBuffer; _wrappedLine.resize(lineCount); }
void HistoryScrollBuffer::getCells(int lineNumber, int startColumn, int count, Character* buffer) { if ( count == 0 ) return; Q_ASSERT( lineNumber < _maxLineCount ); if (lineNumber >= _usedLines) { memset(buffer, 0, count * sizeof(Character)); return; } const HistoryLine& line = _historyBuffer[bufferIndex(lineNumber)]; //kDebug() << "startCol " << startColumn; //kDebug() << "line.size() " << line.size(); //kDebug() << "count " << count; Q_ASSERT( startColumn <= line.size() - count ); memcpy(buffer, line.constData() + startColumn , count * sizeof(Character)); }
void HistoryScrollBuffer::addLine(bool previousWrapped) { _wrappedLine[bufferIndex(_usedLines-1)] = previousWrapped; }