// 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. #include "tools/gn/builder_record.h" #include "tools/gn/item.h" BuilderRecord::BuilderRecord(ItemType type, const Label& label) : type_(type), label_(label), originally_referenced_from_(nullptr), should_generate_(false), resolved_(false) { } BuilderRecord::~BuilderRecord() = default; // static const char* BuilderRecord::GetNameForType(ItemType type) { switch (type) { case ITEM_TARGET: return "target"; case ITEM_CONFIG: return "config"; case ITEM_TOOLCHAIN: return "toolchain"; case ITEM_POOL: return "pool"; case ITEM_UNKNOWN: default: return "unknown"; } } // static bool BuilderRecord::IsItemOfType(const Item* item, ItemType type) { switch (type) { case ITEM_TARGET: return !!item->AsTarget(); case ITEM_CONFIG: return !!item->AsConfig(); case ITEM_TOOLCHAIN: return !!item->AsToolchain(); case ITEM_POOL: return !!item->AsPool(); case ITEM_UNKNOWN: default: return false; } } // static BuilderRecord::ItemType BuilderRecord::TypeOfItem(const Item* item) { if (item->AsTarget()) return ITEM_TARGET; if (item->AsConfig()) return ITEM_CONFIG; if (item->AsToolchain()) return ITEM_TOOLCHAIN; if (item->AsPool()) return ITEM_POOL; NOTREACHED(); return ITEM_UNKNOWN; } void BuilderRecord::AddDep(BuilderRecord* record) { all_deps_.insert(record); if (!record->resolved()) { unresolved_deps_.insert(record); record->waiting_on_resolution_.insert(this); } }