Chromium Code Reviews

Unified Diff: build/android/gyp/java_cpp_enum.py

Issue 1273173002: Added Network Quality Estimator Real-time interface to Cronet (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed enum parser Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
« no previous file with comments | « no previous file | build/android/gyp/java_cpp_enum_tests.py » ('j') | net/base/network_quality_estimator.h » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/gyp/java_cpp_enum.py
diff --git a/build/android/gyp/java_cpp_enum.py b/build/android/gyp/java_cpp_enum.py
index c2f1764b1be9ade87751aa7a8c8f4afa1f93abc6..350601db4b9c27f73e11a309a104a161b6ef8d7a 100755
--- a/build/android/gyp/java_cpp_enum.py
+++ b/build/android/gyp/java_cpp_enum.py
@@ -29,13 +29,15 @@ class EnumDefinition(object):
self.class_name_override = class_name_override
self.enum_package = enum_package
self.entries = collections.OrderedDict(entries or [])
+ self.comments = collections.OrderedDict(entries or [])
self.prefix_to_strip = None
self.fixed_type = fixed_type
- def AppendEntry(self, key, value):
+ def AppendEntry(self, key, value, comment):
if key in self.entries:
raise Exception('Multiple definitions of key %s found.' % key)
self.entries[key] = value
+ self.comments[key] = comment
@property
def class_name(self):
@@ -121,7 +123,7 @@ class DirectiveSet(object):
class HeaderParser(object):
- single_line_comment_re = re.compile(r'\s*//')
+ single_line_comment_re = re.compile(r'\s*//(.*)')
multi_line_comment_start_re = re.compile(r'\s*/\*')
enum_line_re = re.compile(r'^\s*(\w+)(\s*\=\s*([^,\n]+))?,?')
enum_end_re = re.compile(r'^\s*}\s*;\.*$')
@@ -146,6 +148,7 @@ class HeaderParser(object):
self._path = path
self._enum_definitions = []
self._in_enum = False
+ self._current_comment = []
self._current_definition = None
self._generator_directives = DirectiveSet()
self._multi_line_generator_directive = None
@@ -168,9 +171,12 @@ class HeaderParser(object):
self._ParseEnumLine(line)
def _ParseEnumLine(self, line):
- if HeaderParser.single_line_comment_re.match(line):
+ comment = HeaderParser.single_line_comment_re.match(line)
+ if comment:
+ self._current_comment.append(comment.groups()[0])
return
if HeaderParser.multi_line_comment_start_re.match(line):
+ self._current_comment = []
raise Exception('Multi-line comments in enums are not supported in ' +
self._path)
enum_end = HeaderParser.enum_end_re.match(line)
@@ -183,7 +189,9 @@ class HeaderParser(object):
elif enum_entry:
enum_key = enum_entry.groups()[0]
enum_value = enum_entry.groups()[2]
- self._current_definition.AppendEntry(enum_key, enum_value)
+ self._current_definition.AppendEntry(enum_key, enum_value,
+ self._current_comment)
+ self._current_comment = []
def _ParseMultiLineDirectiveLine(self, line):
multi_line_directive_continuation = (
@@ -259,7 +267,7 @@ def DoParseHeaderFile(path):
def GenerateOutput(source_path, enum_definition):
template = Template("""
-// Copyright 2014 The Chromium Authors. All rights reserved.
+// Copyright 2015 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.
@@ -275,15 +283,26 @@ ${ENUM_ENTRIES}
}
""")
- enum_template = Template(' public static final int ${NAME} = ${VALUE};')
+ enum_template = Template('${COMMENT} '
+ 'public static final int ${NAME} = ${VALUE};')
enum_entries_string = []
for enum_name, enum_value in enum_definition.entries.iteritems():
+ enum_comment_string = []
+ line_separator = '\n'
+ if enum_name in enum_definition.comments and \
+ enum_definition.comments[enum_name]:
+ line_separator += '\n'
+ enum_comment_string.append(' /**\n')
+ for comment_line in enum_definition.comments[enum_name]:
+ enum_comment_string.append(' *' + comment_line + '\n')
+ enum_comment_string.append(' */\n')
values = {
+ 'COMMENT': ''.join(enum_comment_string),
'NAME': enum_name,
'VALUE': enum_value,
}
enum_entries_string.append(enum_template.substitute(values))
- enum_entries_string = '\n'.join(enum_entries_string)
+ enum_entries_string = line_separator.join(enum_entries_string)
values = {
'CLASS_NAME': enum_definition.class_name,
« no previous file with comments | « no previous file | build/android/gyp/java_cpp_enum_tests.py » ('j') | net/base/network_quality_estimator.h » ('J')

Powered by Google App Engine