|  | // Copyright 2016 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. | 
|  |  | 
|  | #ifndef TOOLS_GN_BUNDLE_FILE_RULE_H_ | 
|  | #define TOOLS_GN_BUNDLE_FILE_RULE_H_ | 
|  |  | 
|  | #include <vector> | 
|  |  | 
|  | #include "tools/gn/source_file.h" | 
|  | #include "tools/gn/substitution_pattern.h" | 
|  |  | 
|  | class BundleData; | 
|  | class Settings; | 
|  | class SourceFile; | 
|  | class Target; | 
|  | class OutputFile; | 
|  |  | 
|  | // BundleFileRule contains the information found in a "bundle_data" target. | 
|  | class BundleFileRule { | 
|  | public: | 
|  | BundleFileRule(const Target* bundle_data_target, | 
|  | const std::vector<SourceFile> sources, | 
|  | const SubstitutionPattern& pattern); | 
|  | BundleFileRule(const BundleFileRule& other); | 
|  | ~BundleFileRule(); | 
|  |  | 
|  | // Applies the substitution pattern to a source file, returning the result | 
|  | // as either a SourceFile or an OutputFile. | 
|  | SourceFile ApplyPatternToSource(const Settings* settings, | 
|  | const BundleData& bundle_data, | 
|  | const SourceFile& source_file) const; | 
|  | OutputFile ApplyPatternToSourceAsOutputFile( | 
|  | const Settings* settings, | 
|  | const BundleData& bundle_data, | 
|  | const SourceFile& source_file) const; | 
|  |  | 
|  | // Returns the associated target (of type Target::BUNDLE_DATA). May be | 
|  | // null during testing. | 
|  | const Target* target() const { return target_; } | 
|  |  | 
|  | // Returns the list of SourceFiles. | 
|  | const std::vector<SourceFile>& sources() const { return sources_; } | 
|  |  | 
|  | private: | 
|  | const Target* target_; | 
|  | std::vector<SourceFile> sources_; | 
|  | SubstitutionPattern pattern_; | 
|  | }; | 
|  |  | 
|  | #endif  // TOOLS_GN_BUNDLE_FILE_RULE_H_ |