| 539 | } |
| 540 | |
| 541 | std::string Version::DebugString() const { |
| 542 | std::string r; |
| 543 | for (int level = 0; level < config::kNumLevels; level++) { |
| 544 | // E.g., |
| 545 | // --- level 1 --- |
| 546 | // 17:123['a' .. 'd'] |
| 547 | // 20:43['e' .. 'g'] |
| 548 | r.append("--- level "); |
| 549 | AppendNumberTo(&r, level); |
| 550 | r.append(" ---\n"); |
| 551 | const std::vector<FileMetaData*>& files = files_[level]; |
| 552 | for (size_t i = 0; i < files.size(); i++) { |
| 553 | r.push_back(' '); |
| 554 | AppendNumberTo(&r, files[i]->number); |
| 555 | r.push_back(':'); |
| 556 | AppendNumberTo(&r, files[i]->file_size); |
| 557 | r.append("["); |
| 558 | r.append(files[i]->smallest.DebugString()); |
| 559 | r.append(" .. "); |
| 560 | r.append(files[i]->largest.DebugString()); |
| 561 | r.append("]\n"); |
| 562 | } |
| 563 | } |
| 564 | return r; |
| 565 | } |
| 566 | |
| 567 | // A helper class so we can efficiently apply a whole sequence |
| 568 | // of edits to a particular state without creating intermediate |
no test coverage detected