1// Copyright (c) 2013 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#include "tools/gn/builder_record.h" 6 7#include "tools/gn/item.h" 8 9BuilderRecord::BuilderRecord(ItemType type, const Label& label) 10 : type_(type), 11 label_(label), 12 originally_referenced_from_(NULL), 13 should_generate_(false), 14 resolved_(false) { 15} 16 17BuilderRecord::~BuilderRecord() { 18} 19 20// static 21const char* BuilderRecord::GetNameForType(ItemType type) { 22 switch (type) { 23 case ITEM_TARGET: 24 return "target"; 25 case ITEM_CONFIG: 26 return "config"; 27 case ITEM_TOOLCHAIN: 28 return "toolchain"; 29 case ITEM_UNKNOWN: 30 default: 31 return "unknown"; 32 } 33} 34 35// static 36bool BuilderRecord::IsItemOfType(const Item* item, ItemType type) { 37 switch (type) { 38 case ITEM_TARGET: 39 return !!item->AsTarget(); 40 case ITEM_CONFIG: 41 return !!item->AsConfig(); 42 case ITEM_TOOLCHAIN: 43 return !!item->AsToolchain(); 44 case ITEM_UNKNOWN: 45 default: 46 return false; 47 } 48} 49 50// static 51BuilderRecord::ItemType BuilderRecord::TypeOfItem(const Item* item) { 52 if (item->AsTarget()) 53 return ITEM_TARGET; 54 if (item->AsConfig()) 55 return ITEM_CONFIG; 56 if (item->AsToolchain()) 57 return ITEM_TOOLCHAIN; 58 59 NOTREACHED(); 60 return ITEM_UNKNOWN; 61} 62 63void BuilderRecord::AddDep(BuilderRecord* record) { 64 all_deps_.insert(record); 65 if (!record->resolved()) { 66 unresolved_deps_.insert(record); 67 record->waiting_on_resolution_.insert(this); 68 } 69} 70