/* * Copyright (c) 2022, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include struct MountInfo { DeprecatedString mount_point; DeprecatedString source; }; class TreeNode final { public: TreeNode(DeprecatedString name) : m_name(move(name)) {}; DeprecatedString name() const { return m_name; } i64 area() const { return m_area; } size_t num_children() const { if (m_children) { return m_children->size(); } return 0; } TreeNode const& child_at(size_t i) const { return m_children->at(i); } Optional child_with_name(DeprecatedString name) const; void sort_children_by_area() const; HashMap populate_filesize_tree(Vector& mounts, Function on_progress); private: long long int update_totals(); DeprecatedString m_name; i64 m_area { 0 }; OwnPtr> m_children; }; class Tree { public: static ErrorOr> create(DeprecatedString root_name) { return adopt_nonnull_own_or_enomem(new (nothrow) Tree(move(root_name))); } ~Tree() {}; TreeNode& root() { return m_root; }; private: Tree(DeprecatedString root_name) : m_root(move(root_name)) {}; TreeNode m_root; };