| // 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 "gn/source_file.h" |
| #include "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. |
| bool ApplyPatternToSource(const Settings* settings, |
| const Target* target, |
| const BundleData& bundle_data, |
| const SourceFile& source_file, |
| SourceFile* expanded_source_file, |
| Err* err) const; |
| bool ApplyPatternToSourceAsOutputFile(const Settings* settings, |
| const Target* target, |
| const BundleData& bundle_data, |
| const SourceFile& source_file, |
| OutputFile* expanded_output_file, |
| Err* err) 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_ |