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 "gn/config_values_extractors.h"
6
7 #include "gn/escape.h"
8
9 namespace {
10
11 class EscapedStringWriter {
12 public:
EscapedStringWriter(const EscapeOptions & escape_options)13 explicit EscapedStringWriter(const EscapeOptions& escape_options)
14 : escape_options_(escape_options) {}
15
operator ()(const std::string & s,std::ostream & out) const16 void operator()(const std::string& s, std::ostream& out) const {
17 out << " ";
18 EscapeStringToStream(out, s, escape_options_);
19 }
20
21 private:
22 const EscapeOptions& escape_options_;
23 };
24
25 } // namespace
26
RecursiveTargetConfigStringsToStream(const Target * target,const std::vector<std::string> & (ConfigValues::* getter)()const,const EscapeOptions & escape_options,std::ostream & out)27 void RecursiveTargetConfigStringsToStream(
28 const Target* target,
29 const std::vector<std::string>& (ConfigValues::*getter)() const,
30 const EscapeOptions& escape_options,
31 std::ostream& out) {
32 RecursiveTargetConfigToStream(target, getter,
33 EscapedStringWriter(escape_options), out);
34 }
35