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

Side by Side Diff: tools/json_schema_compiler/cpp_bundle_generator.py

Issue 12330089: JSON compiler to include "customBindings" in the function name. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 7 years, 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/common/extensions/api/storage.json ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import code 5 import code
6 import cpp_util 6 import cpp_util
7 from model import Platforms 7 from model import Platforms
8 from schema_util import CapitalizeFirstLetter 8 from schema_util import CapitalizeFirstLetter
9 from schema_util import JsFunctionNameToClassName 9 from schema_util import JsFunctionNameToClassName
10 10
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 if model_object.platforms is None: 75 if model_object.platforms is None:
76 return None 76 return None
77 ifdefs = [] 77 ifdefs = []
78 for platform in model_object.platforms: 78 for platform in model_object.platforms:
79 if platform == Platforms.CHROMEOS: 79 if platform == Platforms.CHROMEOS:
80 ifdefs.append('defined(OS_CHROMEOS)') 80 ifdefs.append('defined(OS_CHROMEOS)')
81 else: 81 else:
82 raise ValueError("Unsupported platform ifdef: %s" % platform.name) 82 raise ValueError("Unsupported platform ifdef: %s" % platform.name)
83 return ' and '.join(ifdefs) 83 return ' and '.join(ifdefs)
84 84
85 def _GetNamespaceFunctions(self, namespace): 85 def _GenerateRegisterFunctions(self, namespace_name, function):
86 functions = list(namespace.functions.values()) 86 c = code.Code()
87 if namespace.compiler_options.get("generate_type_functions", False): 87 function_ifdefs = self._GetPlatformIfdefs(function)
88 for type_ in namespace.types.values(): 88 if function_ifdefs is not None:
89 functions += list(type_.functions.values()) 89 c.Append("#if %s" % function_ifdefs, indent_level=0)
90 return functions 90
91 function_name = JsFunctionNameToClassName(namespace_name, function.name)
92 c.Append("registry->RegisterFunction<%sFunction>();" % (
93 function_name))
94
95 if function_ifdefs is not None:
96 c.Append("#endif // %s" % function_ifdefs, indent_level=0)
97 return c
91 98
92 def _GenerateFunctionRegistryRegisterAll(self): 99 def _GenerateFunctionRegistryRegisterAll(self):
93 c = code.Code() 100 c = code.Code()
94 c.Append('// static') 101 c.Append('// static')
95 c.Sblock('void GeneratedFunctionRegistry::RegisterAll(' 102 c.Sblock('void GeneratedFunctionRegistry::RegisterAll('
96 'ExtensionFunctionRegistry* registry) {') 103 'ExtensionFunctionRegistry* registry) {')
97 for namespace in self._model.namespaces.values(): 104 for namespace in self._model.namespaces.values():
98 namespace_ifdefs = self._GetPlatformIfdefs(namespace) 105 namespace_ifdefs = self._GetPlatformIfdefs(namespace)
99 if namespace_ifdefs is not None: 106 if namespace_ifdefs is not None:
100 c.Append("#if %s" % namespace_ifdefs, indent_level=0) 107 c.Append("#if %s" % namespace_ifdefs, indent_level=0)
101 108
102 namespace_name = CapitalizeFirstLetter(namespace.name.replace( 109 namespace_name = CapitalizeFirstLetter(namespace.name.replace(
103 "experimental.", "")) 110 "experimental.", ""))
104 for function in self._GetNamespaceFunctions(namespace): 111 for function in namespace.functions.values():
105 if function.nocompile: 112 if function.nocompile:
106 continue 113 continue
107 function_ifdefs = self._GetPlatformIfdefs(function) 114 c.Concat(self._GenerateRegisterFunctions(namespace.name, function))
108 if function_ifdefs is not None:
109 c.Append("#if %s" % function_ifdefs, indent_level=0)
110 115
111 function_name = JsFunctionNameToClassName(namespace.name, function.name) 116 for type_ in namespace.types.values():
112 c.Append("registry->RegisterFunction<%sFunction>();" % ( 117 for function in type_.functions.values():
113 function_name)) 118 if function.nocompile:
114 119 continue
115 if function_ifdefs is not None: 120 namespace_types_name = JsFunctionNameToClassName(
116 c.Append("#endif // %s" % function_ifdefs, indent_level=0) 121 namespace.name, type_.name)
122 c.Concat(self._GenerateRegisterFunctions(namespace_types_name,
123 function))
117 124
118 if namespace_ifdefs is not None: 125 if namespace_ifdefs is not None:
119 c.Append("#endif // %s" % namespace_ifdefs, indent_level=0) 126 c.Append("#endif // %s" % namespace_ifdefs, indent_level=0)
120 c.Eblock("}") 127 c.Eblock("}")
121 return c 128 return c
122 129
123 class _APIHGenerator(object): 130 class _APIHGenerator(object):
124 """Generates the header for API registration / declaration""" 131 """Generates the header for API registration / declaration"""
125 def __init__(self, cpp_bundle): 132 def __init__(self, cpp_bundle):
126 self._bundle = cpp_bundle 133 self._bundle = cpp_bundle
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 separators=(',', ':')) 248 separators=(',', ':'))
242 # Escape all double-quotes and backslashes. For this to output a valid 249 # Escape all double-quotes and backslashes. For this to output a valid
243 # JSON C string, we need to escape \ and ". 250 # JSON C string, we need to escape \ and ".
244 json_content = json_content.replace('\\', '\\\\').replace('"', '\\"') 251 json_content = json_content.replace('\\', '\\\\').replace('"', '\\"')
245 c.Append('(*schemas)["%s"] = "%s";' % (namespace.name, json_content)) 252 c.Append('(*schemas)["%s"] = "%s";' % (namespace.name, json_content))
246 c.Eblock('}') 253 c.Eblock('}')
247 c.Append() 254 c.Append()
248 c.Concat(cpp_util.CloseNamespace(self._bundle._cpp_namespace)) 255 c.Concat(cpp_util.CloseNamespace(self._bundle._cpp_namespace))
249 c.Append() 256 c.Append()
250 return c 257 return c
OLDNEW
« no previous file with comments | « chrome/common/extensions/api/storage.json ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698