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

Unified Diff: third_party/grpc/tools/buildgen/plugins/list_api.py

Issue 1932353002: Initial checkin of gRPC to third_party/ Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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: third_party/grpc/tools/buildgen/plugins/list_api.py
diff --git a/third_party/WebKit/Source/build/scripts/make_internal_runtime_flags.py b/third_party/grpc/tools/buildgen/plugins/list_api.py
similarity index 52%
copy from third_party/WebKit/Source/build/scripts/make_internal_runtime_flags.py
copy to third_party/grpc/tools/buildgen/plugins/list_api.py
index 131394158827761ba9ef8f782c019eff403493d1..ff937a0ab837acd0b2365f3a16153eadbbc9dcab 100755
--- a/third_party/WebKit/Source/build/scripts/make_internal_runtime_flags.py
+++ b/third_party/grpc/tools/buildgen/plugins/list_api.py
@@ -1,5 +1,7 @@
-#!/usr/bin/env python
-# Copyright (C) 2013 Google Inc. All rights reserved.
+#!/usr/bin/env python2.7
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
@@ -27,41 +29,50 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-import os.path
+import collections
+import fnmatch
+import os
+import re
import sys
+import yaml
+
+
+_RE_API = r'(?:GPRAPI|GRPCAPI|CENSUSAPI)([^;]*);'
-import in_generator
-import make_runtime_features
-import name_utilities
-import template_expander
+def list_c_apis(filenames):
+ for filename in filenames:
+ with open(filename, 'r') as f:
+ text = f.read()
+ for m in re.finditer(_RE_API, text):
+ api_declaration = re.sub('[ \r\n\t]+', ' ', m.group(1))
+ type_and_name, args_and_close = api_declaration.split('(', 1)
+ args = args_and_close[:args_and_close.rfind(')')].strip()
+ last_space = type_and_name.rfind(' ')
+ last_star = type_and_name.rfind('*')
+ type_end = max(last_space, last_star)
+ return_type = type_and_name[0:type_end+1].strip()
+ name = type_and_name[type_end+1:].strip()
+ yield {'return_type': return_type, 'name': name, 'arguments': args, 'header': filename}
-# We want exactly the same parsing as RuntimeFeatureWriter
-# but generate different files.
-class InternalRuntimeFlagsWriter(make_runtime_features.RuntimeFeatureWriter):
- class_name = 'InternalRuntimeFlags'
- def __init__(self, in_file_path):
- super(InternalRuntimeFlagsWriter, self).__init__(in_file_path)
- self._outputs = {(self.class_name + '.idl'): self.generate_idl,
- (self.class_name + '.h'): self.generate_header,
- }
+def headers_under(directory):
+ for root, dirnames, filenames in os.walk(directory):
+ for filename in fnmatch.filter(filenames, '*.h'):
+ yield os.path.join(root, filename)
- @template_expander.use_jinja(class_name + '.idl.tmpl')
- def generate_idl(self):
- return {
- 'features': self._features,
- 'standard_features': self._standard_features,
- }
- @template_expander.use_jinja(class_name + '.h.tmpl')
- def generate_header(self):
- return {
- 'features': self._features,
- 'feature_sets': self._feature_sets(),
- 'standard_features': self._standard_features,
- }
+def mako_plugin(dictionary):
+ apis = []
+
+# for lib in dictionary['libs']:
+# if lib['name'] == 'grpc':
+# apis.extend(list_c_apis(lib['public_headers']))
+ apis.extend(list_c_apis(sorted(headers_under('include/grpc'))))
+
+ dictionary['c_apis'] = apis
if __name__ == '__main__':
- in_generator.Maker(InternalRuntimeFlagsWriter).main(sys.argv)
+ print yaml.dump([api for api in list_c_apis(headers_under('include/grpc'))])
+
« no previous file with comments | « third_party/grpc/tools/buildgen/plugins/generate_vsprojects.py ('k') | third_party/grpc/tools/buildgen/plugins/list_protos.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698