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

Side by Side Diff: tools/srpcgen.py

Issue 5974006: Convert srpc definitions from using int64 to using PP_Instance, PP_Module, an... (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: '' Created 9 years, 11 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 | « tests/ppapi_proxy/event_example.cc ('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 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright 2010, Google Inc. 2 # Copyright 2010, Google Inc.
3 # All rights reserved. 3 # All rights reserved.
4 # 4 #
5 # Redistribution and use in source and binary forms, with or without 5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions are 6 # modification, are permitted provided that the following conditions are
7 # met: 7 # met:
8 # 8 #
9 # * Redistributions of source code must retain the above copyright 9 # * Redistributions of source code must retain the above copyright
10 # notice, this list of conditions and the following disclaimer. 10 # notice, this list of conditions and the following disclaimer.
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 88
89 types = {'bool': ['b', 'bool', 'u.bval', ''], 89 types = {'bool': ['b', 'bool', 'u.bval', ''],
90 'char[]': ['C', 'char*', 'arrays.carr', 'u.count'], 90 'char[]': ['C', 'char*', 'arrays.carr', 'u.count'],
91 'double': ['d', 'double', 'u.dval', ''], 91 'double': ['d', 'double', 'u.dval', ''],
92 'double[]': ['D', 'double*', 'arrays.darr', 'u.count'], 92 'double[]': ['D', 'double*', 'arrays.darr', 'u.count'],
93 'handle': ['h', 'NaClSrpcImcDescType', 'u.hval', ''], 93 'handle': ['h', 'NaClSrpcImcDescType', 'u.hval', ''],
94 'int32_t': ['i', 'int32_t', 'u.ival', ''], 94 'int32_t': ['i', 'int32_t', 'u.ival', ''],
95 'int32_t[]': ['I', 'int32_t*', 'arrays.iarr', 'u.count'], 95 'int32_t[]': ['I', 'int32_t*', 'arrays.iarr', 'u.count'],
96 'int64_t': ['l', 'int64_t', 'u.lval', ''], 96 'int64_t': ['l', 'int64_t', 'u.lval', ''],
97 'int64_t[]': ['L', 'int64_t', 'arrays.larr', 'u.count'], 97 'int64_t[]': ['L', 'int64_t', 'arrays.larr', 'u.count'],
98 'PP_Instance': ['l', 'PP_Instance', 'u.lval', ''],
99 'PP_Module': ['l', 'PP_Module', 'u.lval', ''],
100 'PP_Resource': ['l', 'PP_Resource', 'u.lval', ''],
98 'string': ['s', 'char*', 'arrays.str', ''], 101 'string': ['s', 'char*', 'arrays.str', ''],
99 } 102 }
100 103
101 104
105 def AddHeader(name):
106 """Adds a header to both the .cc and .h files."""
107 global HEADER_START
108 global SOURCE_FILE_INCLUDES
109
110 HEADER_START += "#include \"%s\"\n" % name
111 SOURCE_FILE_INCLUDES += "#include \"%s\"\n" % name
112
113
102 def CountName(name): 114 def CountName(name):
103 """Returns the name of the auxiliary count member used for array typed.""" 115 """Returns the name of the auxiliary count member used for array typed."""
104 return '%s_bytes' % name 116 return '%s_bytes' % name
105 117
106 118
107 def FormatRpcPrototype(is_server, class_name, indent, rpc): 119 def FormatRpcPrototype(is_server, class_name, indent, rpc):
108 """Returns a string for the prototype of an individual RPC.""" 120 """Returns a string for the prototype of an individual RPC."""
109 121
110 def FormatArgs(is_output, args): 122 def FormatArgs(is_output, args):
111 """Returns a string containing the formatted arguments for an RPC.""" 123 """Returns a string containing the formatted arguments for an RPC."""
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 def MakePath(name): 329 def MakePath(name):
318 paths = name.split(os.sep) 330 paths = name.split(os.sep)
319 path = os.sep.join(paths[:-1]) 331 path = os.sep.join(paths[:-1])
320 try: 332 try:
321 os.makedirs(path) 333 os.makedirs(path)
322 except OSError: 334 except OSError:
323 return 335 return
324 336
325 337
326 def main(argv): 338 def main(argv):
327 usage = 'Usage: srpcgen.py <-c | -s> [--include=<name>] <iname> <gname>' 339 usage = 'Usage: srpcgen.py <-c | -s> [--include=<name>] [--ppapi]'
328 usage = usage + ' <.h> <.cc> <specs>' 340 usage = usage + ' <iname> <gname> <.h> <.cc> <specs>'
329 341
330 mode = None 342 mode = None
343 ppapi = False
331 try: 344 try:
332 long_opts = ['include='] 345 long_opts = ['include=', 'ppapi']
333 opts, pargs = getopt.getopt(argv[1:], 'cs', long_opts) 346 opts, pargs = getopt.getopt(argv[1:], 'cs', long_opts)
334 except getopt.error, e: 347 except getopt.error, e:
335 print >>sys.stderr, 'Illegal option:', str(e) 348 print >>sys.stderr, 'Illegal option:', str(e)
336 print >>sys.stderr, usage 349 print >>sys.stderr, usage
337 return 1 350 return 1
338 351
339 # Get the class name for the interface. 352 # Get the class name for the interface.
340 interface_name = pargs[0] 353 interface_name = pargs[0]
341 # Get the name for the token used as a multiple inclusion guard in the header. 354 # Get the name for the token used as a multiple inclusion guard in the header.
342 include_guard_name = pargs[1] 355 include_guard_name = pargs[1]
343 # Get the name of the header file to be generated. 356 # Get the name of the header file to be generated.
344 h_file_name = pargs[2] 357 h_file_name = pargs[2]
345 MakePath(h_file_name) 358 MakePath(h_file_name)
346 h_file = open(h_file_name, 'w') 359 h_file = open(h_file_name, 'w')
347 # Get the name of the source file to be generated. Depending upon whether 360 # Get the name of the source file to be generated. Depending upon whether
348 # -c or -s is generated, this file contains either client or server methods. 361 # -c or -s is generated, this file contains either client or server methods.
349 cc_file_name = pargs[3] 362 cc_file_name = pargs[3]
350 MakePath(cc_file_name) 363 MakePath(cc_file_name)
351 cc_file = open(cc_file_name, 'w') 364 cc_file = open(cc_file_name, 'w')
352 # The remaining arguments are the spec files to be compiled. 365 # The remaining arguments are the spec files to be compiled.
353 spec_files = pargs[4:] 366 spec_files = pargs[4:]
354 367
355 for opt, val in opts: 368 for opt, val in opts:
356 if opt == '-c': 369 if opt == '-c':
357 mode = 'client' 370 mode = 'client'
358 elif opt == '-s': 371 elif opt == '-s':
359 mode = 'server' 372 mode = 'server'
360 elif opt == '--include': 373 elif opt == '--include':
361 h_file_name = val 374 h_file_name = val
375 elif opt == '--ppapi':
376 ppapi = True
377
378 if ppapi:
379 AddHeader("ppapi/c/pp_instance.h")
380 AddHeader("ppapi/c/pp_module.h")
381 AddHeader("ppapi/c/pp_resource.h")
362 382
363 # Convert to forward slash paths if needed 383 # Convert to forward slash paths if needed
364 h_file_name = "/".join(h_file_name.split("\\")) 384 h_file_name = "/".join(h_file_name.split("\\"))
365 385
366 # Verify we picked server or client mode 386 # Verify we picked server or client mode
367 if not mode: 387 if not mode:
368 print >>sys.stderr, 'Neither -c nor -s specified' 388 print >>sys.stderr, 'Neither -c nor -s specified'
369 usage() 389 usage()
370 return 1 390 return 1
371 391
372 # Combine the rpc specs from spec_files into rpcs. 392 # Combine the rpc specs from spec_files into rpcs.
373 specs = [] 393 specs = []
374 for spec_file in spec_files: 394 for spec_file in spec_files:
375 code_obj = compile(open(spec_file, 'r').read(), 'file', 'eval') 395 code_obj = compile(open(spec_file, 'r').read(), 'file', 'eval')
376 specs.append(eval(code_obj)) 396 specs.append(eval(code_obj))
377 # Print out the requested files. 397 # Print out the requested files.
378 if mode == 'client': 398 if mode == 'client':
379 PrintHeaderFile(h_file, False, include_guard_name, interface_name, specs) 399 PrintHeaderFile(h_file, False, include_guard_name, interface_name, specs)
380 PrintClientFile(cc_file, h_file_name, specs) 400 PrintClientFile(cc_file, h_file_name, specs)
381 elif mode == 'server': 401 elif mode == 'server':
382 PrintHeaderFile(h_file, True, include_guard_name, interface_name, specs) 402 PrintHeaderFile(h_file, True, include_guard_name, interface_name, specs)
383 PrintServerFile(cc_file, h_file_name, interface_name, specs) 403 PrintServerFile(cc_file, h_file_name, interface_name, specs)
384 404
385 return 0 405 return 0
386 406
387 407
388 if __name__ == '__main__': 408 if __name__ == '__main__':
389 sys.exit(main(sys.argv)) 409 sys.exit(main(sys.argv))
OLDNEW
« no previous file with comments | « tests/ppapi_proxy/event_example.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698