| 29 | } |
| 30 | |
| 31 | std::shared_ptr<LineIndex> VirtualFile::GetLineIndex(VirtualFileSystem &vfs) const { |
| 32 | auto &lineIndexDB = vfs.GetLineIndexDB(); |
| 33 | auto &fileDB = vfs.GetFileDB(); |
| 34 | auto opLineIndex = lineIndexDB.Query(_fileId); |
| 35 | if (opLineIndex.has_value()) { |
| 36 | return opLineIndex.value(); |
| 37 | } else { |
| 38 | auto opText = fileDB.Query(_fileId); |
| 39 | if (opText.has_value()) { |
| 40 | auto lineIndex = std::make_shared<LineIndex>(); |
| 41 | auto &text = *opText.value(); |
| 42 | lineIndex->Parse(text); |
| 43 | lineIndexDB.Input(_fileId, lineIndex); |
| 44 | return lineIndex; |
| 45 | } |
| 46 | } |
| 47 | return nullptr; |
| 48 | } |
| 49 | |
| 50 | bool VirtualFile::IsNull() const { |
| 51 | return _fileId == 0; |
no test coverage detected