1 // Copyright 2014 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_SUBSTUTITION_LIST_H 6 #define TOOLS_GN_SUBSTUTITION_LIST_H 7 8 #include <string> 9 #include <vector> 10 11 #include "tools/gn/substitution_pattern.h" 12 13 // Represents a list of strings with {{substitution_patterns}} in them. 14 class SubstitutionList { 15 public: 16 SubstitutionList(); 17 ~SubstitutionList(); 18 19 bool Parse(const Value& value, Err* err); 20 bool Parse(const std::vector<std::string>& values, 21 const ParseNode* origin, 22 Err* err); 23 24 // Makes a SubstitutionList from the given hardcoded patterns. 25 static SubstitutionList MakeForTest( 26 const char* a, 27 const char* b = NULL, 28 const char* c = NULL); 29 30 const std::vector<SubstitutionPattern>& list() const { return list_; } 31 32 // Returns a list of all substitution types used by the patterns in thist 33 // list, with the exception of LITERAL. 34 const std::vector<SubstitutionType>& required_types() const { 35 return required_types_; 36 } 37 38 void FillRequiredTypes(SubstitutionBits* bits) const; 39 40 private: 41 std::vector<SubstitutionPattern> list_; 42 43 std::vector<SubstitutionType> required_types_; 44 }; 45 46 #endif // TOOLS_GN_SUBSTUTITION_LIST_H 47