Advertisement
Guest User

getTreeView

a guest
Nov 2nd, 2018
338
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. std::ostringstream treeView;
  2. std::string level = "";
  3.  
  4. std::string getTreeView(const std::vector<std::shared_ptr<FileSystemObject>>& rootObjects)
  5. {
  6.     std::vector<std::shared_ptr<FileSystemObject>> dirs;
  7.     for (int i = 0; i < rootObjects.size(); i++)
  8.     {
  9.         std::shared_ptr<FileSystemObject> currPtr = rootObjects[i];
  10.         std::shared_ptr<Directory> dir = std::dynamic_pointer_cast<Directory>(currPtr);
  11.         if (dir != nullptr)
  12.         {
  13.             treeView << level << dir->getName() << '\n';
  14.             for(auto iter = dir->begin(); iter != dir->end();++iter)
  15.             {
  16.                 std::shared_ptr<FileSystemObject> dirChild = *iter;
  17.                 dirs.push_back(dirChild);
  18.             }
  19.             level += "-->";
  20.             if(!dirs.empty())
  21.             {
  22.                 getTreeView(dirs);
  23.             }
  24.  
  25.             return treeView.str();
  26.         }
  27.         else
  28.         {
  29.             treeView << level << currPtr->getName() << '\n';
  30.         }
  31.  
  32.     }
  33.  
  34.     level += "--->";
  35.     if(!dirs.empty())
  36.     {
  37.         getTreeView(dirs);
  38.     }
  39.  
  40.     return treeView.str();
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement