| Index: trunk/src/tools/gn/item_tree.h
|
| ===================================================================
|
| --- trunk/src/tools/gn/item_tree.h (revision 214322)
|
| +++ trunk/src/tools/gn/item_tree.h (working copy)
|
| @@ -1,69 +0,0 @@
|
| -// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef TOOLS_GN_ITEM_TREE_H_
|
| -#define TOOLS_GN_ITEM_TREE_H_
|
| -
|
| -#include "base/containers/hash_tables.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/synchronization/lock.h"
|
| -#include "tools/gn/label.h"
|
| -
|
| -class Err;
|
| -class Item;
|
| -class ItemNode;
|
| -
|
| -// Represents the full dependency tree if labeled items in the system.
|
| -// Generally you will interact with this through the target manager, etc.
|
| -class ItemTree {
|
| - public:
|
| - ItemTree();
|
| - ~ItemTree();
|
| -
|
| - // This lock must be held when calling the "Locked" functions below.
|
| - base::Lock& lock() { return lock_; }
|
| -
|
| - // Returns NULL if the item is not found.
|
| - //
|
| - // The lock must be held.
|
| - ItemNode* GetExistingNodeLocked(const Label& label);
|
| -
|
| - // There must not be an item with this label in the tree already. Takes
|
| - // ownership of the pointer.
|
| - //
|
| - // The lock must be held.
|
| - void AddNodeLocked(ItemNode* node);
|
| -
|
| - // Mark the given item as being generated. If it has no unresolved
|
| - // dependencies, it will be marked resolved, and the resolved state will be
|
| - // recursively pushed into the dependency tree. Returns an error if there was
|
| - // an error.
|
| - Err MarkItemGeneratedLocked(const Label& label);
|
| -
|
| - // Fills the given vector with all known items.
|
| - void GetAllItemsLocked(std::vector<const Item*>* dest) const;
|
| -
|
| - // Returns an error if there are unresolved dependencies, or no error if
|
| - // there aren't.
|
| - //
|
| - // The lock should not be held.
|
| - Err CheckForBadItems() const;
|
| -
|
| - private:
|
| - Err MarkItemResolvedLocked(ItemNode* node);
|
| -
|
| - // Given a set of unresolved nodes, looks for cycles and returns the error
|
| - // message describing any cycles it found.
|
| - std::string CheckForCircularDependenciesLocked(
|
| - const std::vector<const ItemNode*>& bad_nodes) const;
|
| -
|
| - mutable base::Lock lock_;
|
| -
|
| - typedef base::hash_map<Label, ItemNode*> StringToNodeHash;
|
| - StringToNodeHash items_; // Owning pointer.
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ItemTree);
|
| -};
|
| -
|
| -#endif // TOOLS_GN_ITEM_TREE_H_
|
|
|