Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: scenes/object-statistics.cpp
- ===================================================================
- --- scenes/object-statistics.cpp (revision 6693)
- +++ scenes/object-statistics.cpp (working copy)
- @@ -5,6 +5,39 @@
- REGISTER_FUNCTION_OPERATION("object-statistics", buildObjectStatisticsOperation, "");
- + struct ReferenceStatistics
- + {
- + unsigned referenceUsage;
- +
- + ReferenceStatistics() : referenceUsage(0) {}
- +
- + bool unused() const
- + {
- + return referenceUsage == 0;
- + }
- + };
- +
- + struct ReferenceFileStatistics
- + {
- + mutable ed::map<const ed::string, ReferenceStatistics> referencesStatistics;
- + ed::set<ed::string> referencesNames;
- +
- + void addReference(const ed::string& referenceName)
- + {
- + referencesNames.insert(referenceName);
- + }
- +
- + void incrementReferenceUsage(const ed::string& referenceName)
- + {
- + referencesStatistics[referenceName].referenceUsage++;
- + }
- +
- + bool unused(const ed::string& referenceName) const
- + {
- + return referencesStatistics[referenceName].unused();
- + }
- + };
- +
- void buildObjectStatisticsOperation(const ed::ConsoleArgs& args)
- {
- ed::string configFileName = args["-terrain"];
- @@ -21,7 +54,7 @@
- const auto& referenceFiles = terraDispatch->getReferenceFile();
- const auto& scenes = terraDispatch->getScene();
- const auto& sceneModels = scenes.building_types;
- - ed::map<ed::string, ed::map<ed::string, unsigned>> referencesUsage;
- + ed::map<ed::string, ReferenceFileStatistics> referencesStatistics;
- for (const auto& referenceFile : referenceFiles)
- {
- @@ -28,27 +61,39 @@
- const auto& references = referenceFile.references;
- for (const auto& reference : references)
- {
- + referencesStatistics[referenceFile.getName()].addReference(reference.name);
- for (const auto& modelName : sceneModels)
- {
- if (modelName == reference.name)
- - referencesUsage[referenceFile.getName()][reference.name]++;
- + referencesStatistics[referenceFile.getName()].incrementReferenceUsage(reference.name);
- }
- }
- }
- bool unusedExists = false;
- - for (const auto& referenceFile : referencesUsage)
- + for (const auto& referenceFileStatisticsIterator : referencesStatistics)
- {
- - if (!unusedExists)
- + bool hasUnused = false;
- + const auto& referenceFileStatistics = referenceFileStatisticsIterator.second;
- + for (const auto& referenceName : referenceFileStatistics.referencesNames)
- {
- - std::cout << std::colorRed << "Unused references:\n";
- - unusedExists = true;
- + if (referenceFileStatistics.unused(referenceName))
- + {
- + if (!unusedExists)
- + {
- + std::cout << std::colorRed << "Unused references:\n\n";
- + unusedExists = true;
- + }
- + if (!hasUnused)
- + {
- + std::cout << std::colorWhite << referenceFileStatisticsIterator.first << ":\n";
- + hasUnused = true;
- + }
- + std::cout << std::colorRed << referenceName << "\n";
- + }
- }
- - std::cout << std::colorWhite << "\n" << referenceFile.first << ":\n";
- - for (const auto& unusedReference : referencesUsage[referenceFile.first])
- - {
- - std::cout << std::colorRed << unusedReference.first << "\n";
- - }
- + if (hasUnused)
- + std::cout << "\n";
- }
- if (!unusedExists)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement