• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
list()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.
required_types()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