void GoCodeFormatter::saveCurrentState(const QTextBlock &block) { if (!block.isValid()) return; BlockData blockData; blockData.revision = block.revision(); blockData.beginState = m_beginState; blockData.endState = m_currentState; blockData.indentation = m_indentation; blockData.padding = m_padding; QTextBlock saveableBlock(block); saveBlockData(&saveableBlock, blockData); }
void saveMap(const char* filename, LevelMap* levelMap) { printf("Saving file: %s\n", filename); ofstream file; file.open(filename); if(file.fail()){ printf("Failed to load %s!\n", filename); return; } for(GLshort i = 0; i < MAP_BLOCK[X]; i++){ for(GLshort j = 0; j < MAP_BLOCK[Y]; j++){ saveBlockData(file, LevelMap::getBlockByIso(i, j)); file << "\n"; } file << "\n"; } file.close(); }
void GoCodeFormatter::updateStateUntil(const QTextBlock &endBlock) { QStack<CodeState> previousState = initialState(); QTextBlock it = endBlock.document()->firstBlock(); // find the first block that needs recalculation while (it.isValid() && it != endBlock) { BlockData blockData; if (!loadBlockData(it, &blockData)) break; if (blockData.revision != it.revision()) break; if (previousState.isEmpty() || blockData.beginState.isEmpty() || previousState != blockData.beginState) break; if (TextEditor::TextDocumentLayout::lexerState(endBlock) == -1) break; previousState = blockData.endState; it = it.next(); } if (it == endBlock) // No need to recalculate return; // update everthing until endBlock while (it.isValid() && it != endBlock) { recalculateStateAfter(it); it = it.next(); } // invalidate everything below by marking the state in endBlock as invalid if (it.isValid()) { BlockData invalidBlockData; saveBlockData(&it, invalidBlockData); } }