Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: tools/json_schema_compiler/h_generator.py

Issue 437883002: Make the root_namespace argument to json_schema_compiler.gypi a string (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: un-escape %% for windows Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/json_schema_compiler/h_generator.py
diff --git a/tools/json_schema_compiler/h_generator.py b/tools/json_schema_compiler/h_generator.py
index fbb79e3f817b389340c1397fbf078478657a8653..95c80568f86685bee768c06c9d596a76bccafee7 100644
--- a/tools/json_schema_compiler/h_generator.py
+++ b/tools/json_schema_compiler/h_generator.py
@@ -2,31 +2,31 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+import os
+
from code import Code
from model import PropertyType
import cpp_util
import schema_util
class HGenerator(object):
- def __init__(self, type_generator, cpp_namespace):
+ def __init__(self, type_generator, cpp_namespace_pattern):
self._type_generator = type_generator
- self._cpp_namespace = cpp_namespace
+ self._cpp_namespace_pattern = cpp_namespace_pattern
def Generate(self, namespace):
return _Generator(namespace,
self._type_generator,
- self._cpp_namespace).Generate()
+ self._cpp_namespace_pattern).Generate()
class _Generator(object):
"""A .h generator for a namespace.
"""
- def __init__(self, namespace, cpp_type_generator, cpp_namespace):
+ def __init__(self, namespace, cpp_type_generator, cpp_namespace_pattern):
self._namespace = namespace
self._type_helper = cpp_type_generator
- self._cpp_namespace = cpp_namespace
- self._target_namespace = (
- self._type_helper.GetCppNamespaceName(self._namespace))
+ self._cpp_namespace_pattern = cpp_namespace_pattern
self._generate_error_messages = namespace.compiler_options.get(
'generate_error_messages', False)
@@ -40,8 +40,11 @@ class _Generator(object):
.Append()
)
- ifndef_name = cpp_util.GenerateIfndefName(self._namespace.source_file_dir,
- self._target_namespace)
+ # Hack: for the purpose of gyp the header file will always be the source
+ # file with its file extension replaced by '.h'. Assume so.
+ output_file = os.path.splitext(self._namespace.source_file)[0] + '.h'
+ ifndef_name = cpp_util.GenerateIfndefName(output_file)
+
(c.Append('#ifndef %s' % ifndef_name)
.Append('#define %s' % ifndef_name)
.Append()
@@ -58,19 +61,16 @@ class _Generator(object):
.Append()
)
- c.Concat(cpp_util.OpenNamespace(self._cpp_namespace))
# TODO(calamity): These forward declarations should be #includes to allow
# $ref types from other files to be used as required params. This requires
# some detangling of windows and tabs which will currently lead to circular
# #includes.
- forward_declarations = (
- self._type_helper.GenerateForwardDeclarations())
- if not forward_declarations.IsEmpty():
- (c.Append()
- .Cblock(forward_declarations)
- )
+ c.Cblock(self._type_helper.GenerateForwardDeclarations(
+ self._cpp_namespace_pattern))
- c.Concat(self._type_helper.GetNamespaceStart())
+ cpp_namespace = cpp_util.GetCppNamespace(self._cpp_namespace_pattern,
+ self._namespace.unix_name)
+ c.Concat(cpp_util.OpenNamespace(cpp_namespace))
c.Append()
if self._namespace.properties:
(c.Append('//')
@@ -109,8 +109,7 @@ class _Generator(object):
)
for event in self._namespace.events.values():
c.Cblock(self._GenerateEvent(event))
- (c.Concat(self._type_helper.GetNamespaceEnd())
- .Concat(cpp_util.CloseNamespace(self._cpp_namespace))
+ (c.Concat(cpp_util.CloseNamespace(cpp_namespace))
.Append('#endif // %s' % ifndef_name)
.Append()
)

Powered by Google App Engine
This is Rietveld 408576698