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

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

Issue 2511533002: Add support for single line enums to java_cpp_enum.py. (Closed)
Patch Set: Created 4 years, 1 month 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
« no previous file with comments | « no previous file | build/android/gyp/java_cpp_enum_tests.py » ('j') | no next file with comments »
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 7e848dc8135c0aa10e611ead6daccaca260ec621..f6d7ced4f43d85b0eb23c8666d8267fec7b9dbab 100755
--- a/build/android/gyp/java_cpp_enum.py
+++ b/build/android/gyp/java_cpp_enum.py
@@ -151,7 +151,9 @@ class HeaderParser(object):
optional_fixed_type_re = r'(\:\s*(\w+\s*\w+?))?'
enum_start_re = re.compile(r'^\s*(?:\[cpp.*\])?\s*enum\s+' +
optional_class_or_struct_re + '\s*' + enum_name_re + '\s*' +
- optional_fixed_type_re + '\s*{\s*$')
+ optional_fixed_type_re + '\s*{\s*')
+ enum_single_line_re = re.compile(
+ r'^\s*(?:\[cpp.*\])?\s*enum.*{(?P<enum_entries>.*)}.*$')
def __init__(self, lines, path=''):
self._lines = lines
@@ -192,12 +194,19 @@ class HeaderParser(object):
if comment:
self._current_comments.append(comment)
elif HeaderParser.enum_end_re.match(line):
- self._FinalizeCurrentEnumEntry()
+ self._FinalizeCurrentEnumDefinition()
else:
self._AddToCurrentEnumEntry(line)
if ',' in line:
self._ParseCurrentEnumEntry()
+ def _ParseSingleLineEnum(self, line):
+ for entry in line.split(','):
+ self._AddToCurrentEnumEntry(entry)
+ self._ParseCurrentEnumEntry()
+
+ self._FinalizeCurrentEnumDefinition()
+
def _ParseCurrentEnumEntry(self):
if not self._current_enum_entry:
return
@@ -219,12 +228,13 @@ class HeaderParser(object):
def _AddToCurrentEnumEntry(self, line):
self._current_enum_entry += ' ' + line.strip()
- def _FinalizeCurrentEnumEntry(self):
+ def _FinalizeCurrentEnumDefinition(self):
if self._current_enum_entry:
self._ParseCurrentEnumEntry()
self._ApplyGeneratorDirectives()
self._current_definition.Finalize()
self._enum_definitions.append(self._current_definition)
+ self._current_definition = None
self._in_enum = False
def _ParseMultiLineDirectiveLine(self, line):
@@ -252,6 +262,7 @@ class HeaderParser(object):
generator_directive = HeaderParser.generator_directive_re.match(line)
multi_line_generator_directive_start = (
HeaderParser.multi_line_generator_directive_start_re.match(line))
+ single_line_enum = HeaderParser.enum_single_line_re.match(line)
if generator_directive_error:
raise Exception('Malformed directive declaration in ' + self._path +
@@ -266,13 +277,15 @@ class HeaderParser(object):
directive_name = multi_line_generator_directive_start.groups()[0]
directive_value = multi_line_generator_directive_start.groups()[1]
self._multi_line_generator_directive = (directive_name, [directive_value])
- elif enum_start:
+ elif enum_start or single_line_enum:
if self._generator_directives.empty:
return
self._current_definition = EnumDefinition(
original_enum_name=enum_start.groups()[1],
fixed_type=enum_start.groups()[3])
self._in_enum = True
+ if single_line_enum:
+ self._ParseSingleLineEnum(single_line_enum.group('enum_entries'))
def GetScriptName():
return os.path.basename(os.path.abspath(sys.argv[0]))
« no previous file with comments | « no previous file | build/android/gyp/java_cpp_enum_tests.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698