OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """code generator for GL/GLES extension wrangler.""" | 6 """code generator for GL/GLES extension wrangler.""" |
7 | 7 |
8 import os | 8 import os |
9 import collections | 9 import collections |
10 import re | 10 import re |
(...skipping 1127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1138 | 1138 |
1139 // This file is automatically generated. | 1139 // This file is automatically generated. |
1140 | 1140 |
1141 #ifndef UI_GFX_GL_GL_BINDINGS_AUTOGEN_%(name)s_H_ | 1141 #ifndef UI_GFX_GL_GL_BINDINGS_AUTOGEN_%(name)s_H_ |
1142 #define UI_GFX_GL_GL_BINDINGS_AUTOGEN_%(name)s_H_ | 1142 #define UI_GFX_GL_GL_BINDINGS_AUTOGEN_%(name)s_H_ |
1143 | 1143 |
1144 namespace gfx { | 1144 namespace gfx { |
1145 | 1145 |
1146 class GLContext; | 1146 class GLContext; |
1147 | 1147 |
1148 void InitializeGLBindings%(name)s(); | |
1149 void InitializeGLExtensionBindings%(name)s(GLContext* context); | |
1150 void InitializeDebugGLBindings%(name)s(); | |
1151 void ClearGLBindings%(name)s(); | |
1152 """ % {'name': set_name.upper()}) | 1148 """ % {'name': set_name.upper()}) |
1153 | 1149 |
1154 # Write typedefs for function pointer types. Always use the GL name for the | 1150 # Write typedefs for function pointer types. Always use the GL name for the |
1155 # typedef. | 1151 # typedef. |
1156 file.write('\n') | 1152 file.write('\n') |
1157 for func in functions: | 1153 for func in functions: |
1158 file.write('typedef %s (GL_BINDING_CALL *%sProc)(%s);\n' % | 1154 file.write('typedef %s (GL_BINDING_CALL *%sProc)(%s);\n' % |
1159 (func['return_type'], func['names'][0], func['arguments'])) | 1155 (func['return_type'], func['names'][0], func['arguments'])) |
1160 | 1156 |
1161 # Write declarations for booleans indicating which extensions are available. | 1157 # Write declarations for booleans indicating which extensions are available. |
1162 file.write('\n') | 1158 file.write('\n') |
| 1159 file.write("struct Extensions%s {\n" % set_name.upper()) |
1163 for extension, ext_functions in used_extension_functions: | 1160 for extension, ext_functions in used_extension_functions: |
1164 file.write('GL_EXPORT extern bool g_%s;\n' % extension) | 1161 file.write(' bool b_%s;\n' % extension) |
| 1162 file.write('};\n') |
| 1163 file.write('\n') |
1165 | 1164 |
1166 # Write declarations for function pointers. Always use the GL name for the | 1165 # Write Procs struct. |
1167 # declaration. | 1166 file.write("struct Procs%s {\n" % set_name.upper()) |
| 1167 for func in functions: |
| 1168 file.write(' %sProc %sFn;\n' % (func['names'][0], func['names'][0])) |
| 1169 file.write('};\n') |
1168 file.write('\n') | 1170 file.write('\n') |
| 1171 |
| 1172 # Write Driver struct. |
| 1173 file.write( |
| 1174 """struct GL_EXPORT Driver%(name)s { |
| 1175 void InitializeBindings(); |
| 1176 void InitializeExtensionBindings(GLContext* context); |
| 1177 void InitializeDebugBindings(); |
| 1178 void ClearBindings(); |
| 1179 void UpdateDebugExtensionBindings(); |
| 1180 |
| 1181 Procs%(name)s fn; |
| 1182 Procs%(name)s debug_fn; |
| 1183 Extensions%(name)s ext; |
| 1184 """ % {'name': set_name.upper()}) |
| 1185 file.write('};\n') |
| 1186 file.write('\n') |
| 1187 |
| 1188 # Write Api class. |
| 1189 file.write( |
| 1190 """class GL_EXPORT %(name)sApi { |
| 1191 public: |
| 1192 %(name)sApi(); |
| 1193 virtual ~%(name)sApi(); |
| 1194 |
| 1195 """ % {'name': set_name.upper()}) |
1169 for func in functions: | 1196 for func in functions: |
1170 file.write('GL_EXPORT extern %sProc g_%s;\n' % | 1197 file.write(' virtual %s %sFn(%s) = 0;\n' % |
1171 (func['names'][0], func['names'][0])) | 1198 (func['return_type'], func['names'][0], func['arguments'])) |
| 1199 file.write('};\n') |
1172 file.write('\n') | 1200 file.write('\n') |
| 1201 |
1173 file.write( '} // namespace gfx\n') | 1202 file.write( '} // namespace gfx\n') |
1174 | 1203 |
1175 # Write macros to invoke function pointers. Always use the GL name for the | 1204 # Write macros to invoke function pointers. Always use the GL name for the |
1176 # macro. | 1205 # macro. |
1177 file.write('\n') | 1206 file.write('\n') |
1178 for func in functions: | 1207 for func in functions: |
1179 file.write('#define %s ::gfx::g_%s\n' % | 1208 file.write('#define %s ::gfx::g_current_%s_context->%sFn\n' % |
1180 (func['names'][0], func['names'][0])) | 1209 (func['names'][0], set_name.lower(), func['names'][0])) |
1181 | 1210 |
1182 file.write('\n') | 1211 file.write('\n') |
1183 file.write('#endif // UI_GFX_GL_GL_BINDINGS_AUTOGEN_%s_H_\n' % | 1212 file.write('#endif // UI_GFX_GL_GL_BINDINGS_AUTOGEN_%s_H_\n' % |
1184 set_name.upper()) | 1213 set_name.upper()) |
1185 | 1214 |
1186 | 1215 |
| 1216 def GenerateAPIHeader(file, functions, set_name, used_extension_functions): |
| 1217 """Generates gl_binding_api_autogen_x.h""" |
| 1218 |
| 1219 # Write file header. |
| 1220 file.write( |
| 1221 """// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 1222 // Use of this source code is governed by a BSD-style license that can be |
| 1223 // found in the LICENSE file. |
| 1224 |
| 1225 // This file is automatically generated. |
| 1226 |
| 1227 #ifndef UI_GFX_GL_GL_BINDINGS_API_AUTOGEN_%(name)s_H_ |
| 1228 #define UI_GFX_GL_GL_BINDINGS_API_AUTOGEN_%(name)s_H_ |
| 1229 |
| 1230 """ % {'name': set_name.upper()}) |
| 1231 |
| 1232 # Write API declaration. |
| 1233 for func in functions: |
| 1234 file.write(' virtual %s %sFn(%s) OVERRIDE;\n' % |
| 1235 (func['return_type'], func['names'][0], func['arguments'])) |
| 1236 |
| 1237 file.write('\n') |
| 1238 file.write('#endif // UI_GFX_GL_GL_BINDINGS_API_AUTOGEN_%s_H_\n' % |
| 1239 set_name.upper()) |
| 1240 |
| 1241 |
1187 def GenerateSource(file, functions, set_name, used_extension_functions): | 1242 def GenerateSource(file, functions, set_name, used_extension_functions): |
1188 """Generates gl_binding_autogen_x.cc""" | 1243 """Generates gl_binding_autogen_x.cc""" |
1189 | 1244 |
1190 # Write file header. | 1245 # Write file header. |
1191 file.write( | 1246 file.write( |
1192 """// Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1247 """// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
1193 // Use of this source code is governed by a BSD-style license that can be | 1248 // Use of this source code is governed by a BSD-style license that can be |
1194 // found in the LICENSE file. | 1249 // found in the LICENSE file. |
1195 | 1250 |
1196 // This file is automatically generated. | 1251 // This file is automatically generated. |
1197 | 1252 |
1198 #include <string> | 1253 #include <string> |
1199 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 1254 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
1200 #include "ui/gl/gl_bindings.h" | 1255 #include "ui/gl/gl_bindings.h" |
1201 #include "ui/gl/gl_context.h" | 1256 #include "ui/gl/gl_context.h" |
1202 #include "ui/gl/gl_implementation.h" | 1257 #include "ui/gl/gl_implementation.h" |
| 1258 #include "ui/gl/gl_%s_api_implementation.h" |
1203 | 1259 |
1204 using gpu::gles2::GLES2Util; | 1260 using gpu::gles2::GLES2Util; |
1205 | 1261 |
1206 namespace gfx { | 1262 namespace gfx { |
1207 """) | 1263 """ % set_name.lower()) |
1208 # Write definitions for booleans indicating which extensions are available. | |
1209 for extension, ext_functions in used_extension_functions: | |
1210 file.write('bool g_%s;\n' % extension) | |
1211 | 1264 |
1212 # Write definitions of function pointers. | 1265 # Write definitions of function pointers. |
1213 file.write('\n') | 1266 file.write('\n') |
1214 file.write('static bool g_debugBindingsInitialized;\n') | 1267 file.write('static bool g_debugBindingsInitialized;\n') |
1215 file.write('static void UpdateDebugGLExtensionBindings();\n') | 1268 file.write('Driver%s g_driver_%s;\n' % (set_name.upper(), set_name.lower())) |
1216 file.write('\n') | 1269 file.write('\n') |
1217 for func in functions: | |
1218 file.write('%sProc g_%s;\n' % (func['names'][0], func['names'][0])) | |
1219 | |
1220 file.write('\n') | |
1221 for func in functions: | |
1222 file.write('static %sProc g_debug_%s;\n' % | |
1223 (func['names'][0], func['names'][0])) | |
1224 | 1270 |
1225 # Write function to initialize the core function pointers. The code assumes | 1271 # Write function to initialize the core function pointers. The code assumes |
1226 # any non-NULL pointer returned by GetGLCoreProcAddress() is valid, although | 1272 # any non-NULL pointer returned by GetGLCoreProcAddress() is valid, although |
1227 # it may be overwritten by an extension function pointer later. | 1273 # it may be overwritten by an extension function pointer later. |
1228 file.write('\n') | 1274 file.write('\n') |
1229 file.write('void InitializeGLBindings%s() {\n' % set_name.upper()) | 1275 file.write('void Driver%s::InitializeBindings() {\n' % |
| 1276 set_name.upper()) |
1230 for func in functions: | 1277 for func in functions: |
1231 first_name = func['names'][0] | 1278 first_name = func['names'][0] |
1232 for i, name in enumerate(func['names']): | 1279 for i, name in enumerate(func['names']): |
1233 if i: | 1280 if i: |
1234 file.write(' if (!g_%s)\n ' % first_name) | 1281 file.write(' if (!fn.%sFn)\n ' % first_name) |
1235 file.write( | 1282 file.write( |
1236 ' g_%s = reinterpret_cast<%sProc>(GetGLCoreProcAddress("%s"));\n' % | 1283 ' fn.%sFn = reinterpret_cast<%sProc>(' |
1237 (first_name, first_name, name)) | 1284 'GetGLCoreProcAddress("%s"));\n' % |
| 1285 (first_name, first_name, name)) |
1238 file.write('}\n') | 1286 file.write('}\n') |
1239 file.write('\n') | 1287 file.write('\n') |
1240 | 1288 |
1241 # Write function to initialize the extension function pointers. This function | 1289 # Write function to initialize the extension function pointers. This function |
1242 # uses a current context to query which extensions are actually supported. | 1290 # uses a current context to query which extensions are actually supported. |
1243 file.write('void InitializeGLExtensionBindings%s(GLContext* context) {\n' % | 1291 file.write("""void Driver%s::InitializeExtensionBindings( |
1244 set_name.upper()) | 1292 GLContext* context) { |
| 1293 """ % set_name.upper()) |
1245 file.write(' DCHECK(context && context->IsCurrent(NULL));\n') | 1294 file.write(' DCHECK(context && context->IsCurrent(NULL));\n') |
1246 for extension, ext_functions in used_extension_functions: | 1295 for extension, ext_functions in used_extension_functions: |
1247 file.write(' g_%s = context->HasExtension("%s");\n' % | 1296 file.write(' ext.b_%s = context->HasExtension("%s");\n' % |
1248 (extension, extension)) | 1297 (extension, extension)) |
1249 file.write(' if (g_%s) {\n' % | 1298 file.write(' if (ext.b_%s) {\n' % |
1250 (extension)) | 1299 (extension)) |
1251 queried_entry_points = set() | 1300 queried_entry_points = set() |
1252 for entry_point_name, function_name in ext_functions: | 1301 for entry_point_name, function_name in ext_functions: |
1253 # Replace the pointer unconditionally unless this extension has several | 1302 # Replace the pointer unconditionally unless this extension has several |
1254 # alternatives for the same entry point (e.g., | 1303 # alternatives for the same entry point (e.g., |
1255 # GL_ARB_blend_func_extended). | 1304 # GL_ARB_blend_func_extended). |
1256 if entry_point_name in queried_entry_points: | 1305 if entry_point_name in queried_entry_points: |
1257 file.write(' if (!g_%s)\n ' % entry_point_name) | 1306 file.write(' if (!fn.%sFn)\n ' % entry_point_name) |
1258 file.write( | 1307 file.write( |
1259 ' g_%s = reinterpret_cast<%sProc>(GetGLProcAddress("%s"));\n' % | 1308 ' fn.%sFn = reinterpret_cast<%sProc>(GetGLProcAddress("%s"));\n' % |
1260 (entry_point_name, entry_point_name, function_name)) | 1309 (entry_point_name, entry_point_name, function_name)) |
1261 queried_entry_points.add(entry_point_name) | 1310 queried_entry_points.add(entry_point_name) |
1262 file.write(' }\n') | 1311 file.write(' }\n') |
1263 file.write(' if (g_debugBindingsInitialized)\n') | 1312 file.write(' if (g_debugBindingsInitialized)\n') |
1264 file.write(' UpdateDebugGLExtensionBindings();\n') | 1313 file.write(' UpdateDebugExtensionBindings();\n') |
1265 file.write('}\n') | 1314 file.write('}\n') |
1266 file.write('\n') | 1315 file.write('\n') |
1267 | 1316 |
1268 # Write logging wrappers for each function. | 1317 # Write logging wrappers for each function. |
1269 file.write('extern "C" {\n') | 1318 file.write('extern "C" {\n') |
1270 for func in functions: | 1319 for func in functions: |
1271 names = func['names'] | 1320 names = func['names'] |
1272 return_type = func['return_type'] | 1321 return_type = func['return_type'] |
1273 arguments = func['arguments'] | 1322 arguments = func['arguments'] |
1274 file.write('\n') | 1323 file.write('\n') |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1307 log_argument_names = log_argument_names.replace(',', ' << ", " <<') | 1356 log_argument_names = log_argument_names.replace(',', ' << ", " <<') |
1308 if argument_names == 'void' or argument_names == '': | 1357 if argument_names == 'void' or argument_names == '': |
1309 argument_names = '' | 1358 argument_names = '' |
1310 log_argument_names = '' | 1359 log_argument_names = '' |
1311 else: | 1360 else: |
1312 log_argument_names = " << " + log_argument_names | 1361 log_argument_names = " << " + log_argument_names |
1313 function_name = names[0] | 1362 function_name = names[0] |
1314 if return_type == 'void': | 1363 if return_type == 'void': |
1315 file.write(' GL_SERVICE_LOG("%s" << "(" %s << ")");\n' % | 1364 file.write(' GL_SERVICE_LOG("%s" << "(" %s << ")");\n' % |
1316 (function_name, log_argument_names)) | 1365 (function_name, log_argument_names)) |
1317 file.write(' g_debug_%s(%s);\n' % | 1366 file.write(' g_driver_%s.debug_fn.%sFn(%s);\n' % |
1318 (function_name, argument_names)) | 1367 (set_name.lower(), function_name, argument_names)) |
1319 if 'logging_code' in func: | 1368 if 'logging_code' in func: |
1320 file.write("%s\n" % func['logging_code']) | 1369 file.write("%s\n" % func['logging_code']) |
1321 else: | 1370 else: |
1322 file.write(' GL_SERVICE_LOG("%s" << "(" %s << ")");\n' % | 1371 file.write(' GL_SERVICE_LOG("%s" << "(" %s << ")");\n' % |
1323 (function_name, log_argument_names)) | 1372 (function_name, log_argument_names)) |
1324 file.write(' %s result = g_debug_%s(%s);\n' % | 1373 file.write(' %s result = g_driver_%s.debug_fn.%sFn(%s);\n' % |
1325 (return_type, function_name, argument_names)) | 1374 (return_type, set_name.lower(), function_name, argument_names)) |
1326 if 'logging_code' in func: | 1375 if 'logging_code' in func: |
1327 file.write("%s\n" % func['logging_code']) | 1376 file.write("%s\n" % func['logging_code']) |
1328 else: | 1377 else: |
1329 file.write(' GL_SERVICE_LOG("GL_RESULT: " << result);\n'); | 1378 file.write(' GL_SERVICE_LOG("GL_RESULT: " << result);\n'); |
1330 file.write(' return result;\n') | 1379 file.write(' return result;\n') |
1331 file.write('}\n') | 1380 file.write('}\n') |
1332 file.write('} // extern "C"\n') | 1381 file.write('} // extern "C"\n') |
1333 | 1382 |
1334 # Write function to initialize the debug function pointers. | 1383 # Write function to initialize the debug function pointers. |
1335 file.write('\n') | 1384 file.write('\n') |
1336 file.write('void InitializeDebugGLBindings%s() {\n' % set_name.upper()) | 1385 file.write('void Driver%s::InitializeDebugBindings() {\n' % |
| 1386 set_name.upper()) |
1337 for func in functions: | 1387 for func in functions: |
1338 first_name = func['names'][0] | 1388 first_name = func['names'][0] |
1339 file.write(' if (!g_debug_%s) {\n' % first_name) | 1389 file.write(' if (!debug_fn.%sFn) {\n' % first_name) |
1340 file.write(' g_debug_%s = g_%s;\n' % (first_name, first_name)) | 1390 file.write(' debug_fn.%sFn = fn.%sFn;\n' % (first_name, first_name)) |
1341 file.write(' g_%s = Debug_%s;\n' % (first_name, first_name)) | 1391 file.write(' fn.%sFn = Debug_%s;\n' % (first_name, first_name)) |
1342 file.write(' }\n') | 1392 file.write(' }\n') |
1343 file.write(' g_debugBindingsInitialized = true;\n') | 1393 file.write(' g_debugBindingsInitialized = true;\n') |
1344 file.write('}\n') | 1394 file.write('}\n') |
1345 | 1395 |
1346 # Write function to update the debug function pointers to extension functions | 1396 # Write function to update the debug function pointers to extension functions |
1347 # after the extensions have been initialized. | 1397 # after the extensions have been initialized. |
1348 file.write('\n') | 1398 file.write('\n') |
1349 file.write('static void UpdateDebugGLExtensionBindings() {\n') | 1399 file.write('void Driver%s::UpdateDebugExtensionBindings() {\n' % |
| 1400 set_name.upper()) |
1350 for extension, ext_functions in used_extension_functions: | 1401 for extension, ext_functions in used_extension_functions: |
1351 for name, _ in ext_functions: | 1402 for name, _ in ext_functions: |
1352 file.write(' if (g_debug_%s != g_%s &&\n' % (name, name)) | 1403 file.write(' if (debug_fn.%sFn != fn.%sFn &&\n' % (name, name)) |
1353 file.write(' g_%s != Debug_%s) {\n' % (name, name)) | 1404 file.write(' fn.%sFn != Debug_%s) {\n' % (name, name)) |
1354 file.write(' g_debug_%s = g_%s;\n' % (name, name)) | 1405 file.write(' debug_fn.%sFn = fn.%sFn;\n' % (name, name)) |
1355 file.write(' g_%s = Debug_%s;\n' % (name, name)) | 1406 file.write(' fn.%sFn = Debug_%s;\n' % (name, name)) |
1356 file.write(' }\n') | 1407 file.write(' }\n') |
1357 file.write('}\n') | 1408 file.write('}\n') |
1358 | 1409 |
1359 # Write function to clear all function pointers. | 1410 # Write function to clear all function pointers. |
1360 file.write('\n') | 1411 file.write('\n') |
1361 file.write('void ClearGLBindings%s() {\n' % set_name.upper()) | 1412 file.write("""void Driver%s::ClearBindings() { |
1362 # Clear the availability of GL extensions. | 1413 memset(this, 0, sizeof(*this)); |
1363 for extension, ext_functions in used_extension_functions: | 1414 } |
1364 file.write(' g_%s = false;\n' % extension) | 1415 """ % set_name.upper()) |
1365 # Clear GL bindings. | 1416 |
1366 file.write('\n') | 1417 # Write RealGLApi functions |
1367 for func in functions: | 1418 for func in functions: |
1368 file.write(' g_%s = NULL;\n' % func['names'][0]) | 1419 names = func['names'] |
1369 # Clear debug GL bindings. | 1420 return_type = func['return_type'] |
1370 file.write('\n') | 1421 arguments = func['arguments'] |
1371 for func in functions: | 1422 file.write('\n') |
1372 file.write(' g_debug_%s = NULL;\n' % func['names'][0]) | 1423 file.write('%s Real%sApi::%sFn(%s) {\n' % |
1373 file.write(' g_debugBindingsInitialized = false;\n') | 1424 (return_type, set_name.upper(), names[0], arguments)) |
1374 file.write('}\n') | 1425 argument_names = re.sub( |
| 1426 r'(const )?[a-zA-Z0-9_]+\** ([a-zA-Z0-9_]+)', r'\2', arguments) |
| 1427 argument_names = re.sub( |
| 1428 r'(const )?[a-zA-Z0-9_]+\** ([a-zA-Z0-9_]+)', r'\2', argument_names) |
| 1429 if argument_names == 'void' or argument_names == '': |
| 1430 argument_names = '' |
| 1431 function_name = names[0] |
| 1432 if return_type == 'void': |
| 1433 file.write(' driver_->fn.%sFn(%s);\n' % |
| 1434 (function_name, argument_names)) |
| 1435 else: |
| 1436 file.write(' return driver_->fn.%sFn(%s);\n' % |
| 1437 (function_name, argument_names)) |
| 1438 file.write('}\n') |
1375 | 1439 |
1376 file.write('\n') | 1440 file.write('\n') |
1377 file.write('} // namespace gfx\n') | 1441 file.write('} // namespace gfx\n') |
1378 | 1442 |
1379 | 1443 |
1380 def GenerateMockSource(file, functions): | 1444 def GenerateMockSource(file, functions): |
1381 """Generates functions that invoke a mock GLInterface""" | 1445 """Generates functions that invoke a mock GLInterface""" |
1382 | 1446 |
1383 file.write( | 1447 file.write( |
1384 """// Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1448 """// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1565 | 1629 |
1566 for [functions, set_name, extension_headers, extensions] in FUNCTION_SETS: | 1630 for [functions, set_name, extension_headers, extensions] in FUNCTION_SETS: |
1567 used_extension_functions = GetUsedExtensionFunctions( | 1631 used_extension_functions = GetUsedExtensionFunctions( |
1568 functions, extension_headers, extensions) | 1632 functions, extension_headers, extensions) |
1569 | 1633 |
1570 header_file = open( | 1634 header_file = open( |
1571 os.path.join(dir, 'gl_bindings_autogen_%s.h' % set_name), 'wb') | 1635 os.path.join(dir, 'gl_bindings_autogen_%s.h' % set_name), 'wb') |
1572 GenerateHeader(header_file, functions, set_name, used_extension_functions) | 1636 GenerateHeader(header_file, functions, set_name, used_extension_functions) |
1573 header_file.close() | 1637 header_file.close() |
1574 | 1638 |
| 1639 header_file = open( |
| 1640 os.path.join(dir, 'gl_bindings_api_autogen_%s.h' % set_name), 'wb') |
| 1641 GenerateAPIHeader( |
| 1642 header_file, functions, set_name, used_extension_functions) |
| 1643 header_file.close() |
| 1644 |
1575 source_file = open( | 1645 source_file = open( |
1576 os.path.join(dir, 'gl_bindings_autogen_%s.cc' % set_name), 'wb') | 1646 os.path.join(dir, 'gl_bindings_autogen_%s.cc' % set_name), 'wb') |
1577 GenerateSource(source_file, functions, set_name, used_extension_functions) | 1647 GenerateSource(source_file, functions, set_name, used_extension_functions) |
1578 source_file.close() | 1648 source_file.close() |
1579 | 1649 |
1580 source_file = open(os.path.join(dir, 'gl_bindings_autogen_mock.cc'), 'wb') | 1650 source_file = open(os.path.join(dir, 'gl_bindings_autogen_mock.cc'), 'wb') |
1581 GenerateMockSource(source_file, GL_FUNCTIONS) | 1651 GenerateMockSource(source_file, GL_FUNCTIONS) |
1582 source_file.close() | 1652 source_file.close() |
1583 return 0 | 1653 return 0 |
1584 | 1654 |
1585 | 1655 |
1586 if __name__ == '__main__': | 1656 if __name__ == '__main__': |
1587 sys.exit(main(sys.argv[1:])) | 1657 sys.exit(main(sys.argv[1:])) |
OLD | NEW |