Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Index: scenes/object-statistics.cpp
  2. ===================================================================
  3. --- scenes/object-statistics.cpp    (revision 6693)
  4. +++ scenes/object-statistics.cpp    (working copy)
  5. @@ -5,6 +5,39 @@
  6.  
  7.  REGISTER_FUNCTION_OPERATION("object-statistics", buildObjectStatisticsOperation, "");
  8.  
  9. + struct ReferenceStatistics
  10. + {
  11. +     unsigned referenceUsage;
  12. +
  13. +     ReferenceStatistics() : referenceUsage(0) {}
  14. +
  15. +     bool unused() const
  16. +     {
  17. +         return referenceUsage == 0;
  18. +     }
  19. + };
  20. +
  21. + struct ReferenceFileStatistics
  22. + {
  23. +     mutable ed::map<const ed::string, ReferenceStatistics> referencesStatistics;
  24. +     ed::set<ed::string> referencesNames;
  25. +
  26. +     void addReference(const ed::string& referenceName)
  27. +     {
  28. +         referencesNames.insert(referenceName);
  29. +     }
  30. +
  31. +     void incrementReferenceUsage(const ed::string& referenceName)
  32. +     {
  33. +         referencesStatistics[referenceName].referenceUsage++;
  34. +     }
  35. +
  36. +     bool unused(const ed::string& referenceName) const
  37. +     {
  38. +         return referencesStatistics[referenceName].unused();
  39. +     }
  40. + };
  41. +
  42.  void buildObjectStatisticsOperation(const ed::ConsoleArgs& args)
  43.  {
  44.     ed::string configFileName = args["-terrain"];
  45. @@ -21,7 +54,7 @@
  46.     const auto& referenceFiles = terraDispatch->getReferenceFile();
  47.     const auto& scenes = terraDispatch->getScene();
  48.     const auto& sceneModels = scenes.building_types;
  49. -   ed::map<ed::string, ed::map<ed::string, unsigned>> referencesUsage;
  50. +   ed::map<ed::string, ReferenceFileStatistics> referencesStatistics;
  51.  
  52.     for (const auto& referenceFile : referenceFiles)
  53.     {
  54. @@ -28,27 +61,39 @@
  55.         const auto& references = referenceFile.references;
  56.         for (const auto& reference : references)
  57.         {
  58. +           referencesStatistics[referenceFile.getName()].addReference(reference.name);
  59.             for (const auto& modelName : sceneModels)
  60.             {
  61.                 if (modelName == reference.name)
  62. -                   referencesUsage[referenceFile.getName()][reference.name]++;
  63. +                   referencesStatistics[referenceFile.getName()].incrementReferenceUsage(reference.name);
  64.             }
  65.         }
  66.     }
  67.  
  68.     bool unusedExists = false;
  69. -   for (const auto& referenceFile : referencesUsage)
  70. +   for (const auto& referenceFileStatisticsIterator : referencesStatistics)
  71.     {
  72. -       if (!unusedExists)
  73. +       bool hasUnused = false;
  74. +       const auto& referenceFileStatistics = referenceFileStatisticsIterator.second;
  75. +       for (const auto& referenceName : referenceFileStatistics.referencesNames)
  76.         {
  77. -           std::cout << std::colorRed << "Unused references:\n";
  78. -           unusedExists = true;
  79. +           if (referenceFileStatistics.unused(referenceName))
  80. +           {
  81. +               if (!unusedExists)
  82. +               {
  83. +                   std::cout << std::colorRed << "Unused references:\n\n";
  84. +                   unusedExists = true;
  85. +               }
  86. +               if (!hasUnused)
  87. +               {
  88. +                   std::cout << std::colorWhite << referenceFileStatisticsIterator.first << ":\n";
  89. +                   hasUnused = true;
  90. +               }
  91. +               std::cout << std::colorRed << referenceName << "\n";
  92. +           }
  93.         }
  94. -       std::cout << std::colorWhite << "\n" << referenceFile.first << ":\n";
  95. -       for (const auto& unusedReference : referencesUsage[referenceFile.first])
  96. -       {
  97. -           std::cout << std::colorRed << unusedReference.first << "\n";
  98. -       }
  99. +       if (hasUnused)
  100. +           std::cout << "\n";
  101.     }
  102.  
  103.     if (!unusedExists)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement