Blender V4.3
AS_asset_catalog_tree.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
17#pragma once
18
19#include <map>
20
21#include "AS_asset_catalog.hh"
22
23namespace blender::asset_system {
24
29 public:
32 using ChildMap = std::map<std::string, AssetCatalogTreeItem>;
34
35 private:
37 ChildMap children_;
40 CatalogID catalog_id_;
42 std::string simple_name_;
44 bool has_unsaved_changes_ = false;
45
48 const AssetCatalogTreeItem *parent_ = nullptr;
49
50 friend class AssetCatalogTree;
51
52 public:
54 CatalogID catalog_id,
55 StringRef simple_name,
56 const AssetCatalogTreeItem *parent = nullptr);
57
60 StringRefNull get_name() const;
61 bool has_unsaved_changes() const;
65 int count_parents() const;
66 bool has_children() const;
67
71
72 private:
73 static void foreach_item_recursive(const ChildMap &children_, ItemIterFn callback);
74};
75
77 using ChildMap = AssetCatalogTreeItem::ChildMap;
79
81 ChildMap root_items_;
82
83 public:
85 void insert_item(const AssetCatalog &catalog);
86
91
92 bool is_empty() const;
93
94 const AssetCatalogTreeItem *find_item(const AssetCatalogPath &path) const;
96};
97
98} // namespace blender::asset_system
void foreach_child(ItemIterFn callback) const
AssetCatalogTreeItem(StringRef name, CatalogID catalog_id, StringRef simple_name, const AssetCatalogTreeItem *parent=nullptr)
FunctionRef< void(const AssetCatalogTreeItem &)> ItemIterFn
std::map< std::string, AssetCatalogTreeItem > ChildMap
void foreach_root_item(ItemIterFn callback) const
const AssetCatalogTreeItem * find_item(const AssetCatalogPath &path) const
void foreach_item(ItemIterFn callback) const
void insert_item(const AssetCatalog &catalog)
const AssetCatalogTreeItem * find_root_item(const AssetCatalogPath &path) const
DEGForeachIDComponentCallback callback
Universally Unique Identifier according to RFC4122.