1 // Copyright 2016 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef TOOLS_GN_POOL_H_ 6 #define TOOLS_GN_POOL_H_ 7 8 #include <string> 9 10 #include "gn/item.h" 11 12 // Represents a named pool in the dependency graph. 13 // 14 // A pool is used to limit the parallelism of task invocation in the 15 // generated ninja build. Pools are referenced by toolchains. 16 class Pool : public Item { 17 public: 18 using Item::Item; 19 ~Pool() override; 20 21 // Item implementation. 22 Pool* AsPool() override; 23 const Pool* AsPool() const override; 24 25 // The pool depth (number of task to run simultaneously). depth()26 int64_t depth() const { return depth_; } set_depth(int64_t depth)27 void set_depth(int64_t depth) { depth_ = depth; } 28 29 // The pool name in generated ninja files. 30 std::string GetNinjaName(const Label& default_toolchain) const; 31 32 private: 33 std::string GetNinjaName(bool include_toolchain) const; 34 35 int64_t depth_ = 0; 36 37 Pool(const Pool&) = delete; 38 Pool& operator=(const Pool&) = delete; 39 }; 40 41 #endif // TOOLS_GN_POOL_H_ 42