1 # Copyright 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.
5 """Writes C++ header/cc source files for embedding resources into C++."""
12 def WriteSource(base_name
,
16 """Writes C++ header/cc source files for the given map of string variables.
19 base_name: The basename of the file, without the extension.
20 dir_from_src: Path from src to the directory that will contain the file,
21 using forward slashes.
22 output_dir: Directory to output the sources to.
23 global_string_map: Map of variable names to their string values. These
24 variables will be available as globals.
26 copyright
= '\n'.join([
27 '// Copyright %s The Chromium Authors. All rights reserved.',
28 '// Use of this source code is governed by a BSD-style license that '
30 '// found in the LICENSE file.',
32 '// This file was generated at (%s) by running:',
34 datetime
.date
.today().year
,
35 datetime
.datetime
.now().isoformat(' '),
40 for name
in global_string_map
.iterkeys():
41 externs
+= ['extern const char %s[];' % name
]
43 temp
= '_'.join(dir_from_src
.split('/') + [base_name
])
44 define
= temp
.upper() + '_H_'
53 '#endif // ' + define
])
56 with
open(os
.path
.join(output_dir
, base_name
+ '.h'), 'w') as f
:
61 return line
.replace('\\', '\\\\').replace('"', '\\"')
64 for name
, contents
in global_string_map
.iteritems():
66 if '\n' not in contents
:
67 lines
= [' "%s"' % EscapeLine(contents
)]
69 for line
in contents
.split('\n'):
70 lines
+= [' "%s\\n"' % EscapeLine(line
)]
71 definitions
+= ['const char %s[] =\n%s;' % (name
, '\n'.join(lines
))]
76 '#include "%s"' % (dir_from_src
+ '/' + base_name
+ '.h'),
78 '\n'.join(definitions
)])
81 with
open(os
.path
.join(output_dir
, base_name
+ '.cc'), 'w') as f
: