Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2013 Google Inc. All rights reserved. | 2 # Copyright (c) 2013 Google Inc. All rights reserved. |
| 3 # | 3 # |
| 4 # Redistribution and use in source and binary forms, with or without | 4 # Redistribution and use in source and binary forms, with or without |
| 5 # modification, are permitted provided that the following conditions are | 5 # modification, are permitted provided that the following conditions are |
| 6 # met: | 6 # met: |
| 7 # | 7 # |
| 8 # * Redistributions of source code must retain the above copyright | 8 # * Redistributions of source code must retain the above copyright |
| 9 # notice, this list of conditions and the following disclaimer. | 9 # notice, this list of conditions and the following disclaimer. |
| 10 # * Redistributions in binary form must reproduce the above | 10 # * Redistributions in binary form must reproduce the above |
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 346 maybe_return = "" | 346 maybe_return = "" |
| 347 else: | 347 else: |
| 348 maybe_return = "return " | 348 maybe_return = "return " |
| 349 | 349 |
| 350 return template.substitute( | 350 return template.substitute( |
| 351 None, | 351 None, |
| 352 name=self.name, | 352 name=self.name, |
| 353 agent_class=agent_class, | 353 agent_class=agent_class, |
| 354 agent_fetch=agent_fetch, | 354 agent_fetch=agent_fetch, |
| 355 maybe_return=maybe_return, | 355 maybe_return=maybe_return, |
| 356 params_agent=", ".join(map(Parameter.to_str_name, self.params_impl)[ 1:])) | 356 params_agent=", ".join(map(Parameter.to_str_value, self.params_impl) [1:])) |
| 357 | 357 |
| 358 | 358 |
| 359 class Parameter: | 359 class Parameter: |
| 360 def __init__(self, source): | 360 def __init__(self, source): |
| 361 self.options = [] | 361 self.options = [] |
| 362 match, source = match_and_consume("\[(\w*)\]", source) | 362 match, source = match_and_consume("\[(\w*)\]", source) |
| 363 if match: | 363 if match: |
| 364 self.options.append(match.group(1)) | 364 self.options.append(match.group(1)) |
| 365 | 365 |
| 366 parts = map(str.strip, source.split("=")) | 366 parts = map(str.strip, source.split("=")) |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 377 min_type_tokens = 1 | 377 min_type_tokens = 1 |
| 378 | 378 |
| 379 if len(param_decl.split(" ")) > min_type_tokens: | 379 if len(param_decl.split(" ")) > min_type_tokens: |
| 380 parts = param_decl.split(" ") | 380 parts = param_decl.split(" ") |
| 381 self.type = " ".join(parts[:-1]) | 381 self.type = " ".join(parts[:-1]) |
| 382 self.name = parts[-1] | 382 self.name = parts[-1] |
| 383 else: | 383 else: |
| 384 self.type = param_decl | 384 self.type = param_decl |
| 385 self.name = generate_param_name(self.type) | 385 self.name = generate_param_name(self.type) |
| 386 | 386 |
| 387 if re.match("PassRefPtr<", param_decl): | |
|
aandrey
2014/03/20 06:16:11
maybe also PassOwnPtr?
| |
| 388 self.value = "%s.get()" % self.name | |
| 389 else: | |
| 390 self.value = self.name | |
| 391 | |
| 392 | |
| 387 def to_str_full(self): | 393 def to_str_full(self): |
| 388 if self.default_value is None: | 394 if self.default_value is None: |
| 389 return self.to_str_class_and_name() | 395 return self.to_str_class_and_name() |
| 390 return "%s %s = %s" % (self.type, self.name, self.default_value) | 396 return "%s %s = %s" % (self.type, self.name, self.default_value) |
| 391 | 397 |
| 392 def to_str_class_and_name(self): | 398 def to_str_class_and_name(self): |
| 393 return "%s %s" % (self.type, self.name) | 399 return "%s %s" % (self.type, self.name) |
| 394 | 400 |
| 395 def to_str_class(self): | 401 def to_str_class(self): |
| 396 return self.type | 402 return self.type |
| 397 | 403 |
| 398 def to_str_name(self): | 404 def to_str_name(self): |
| 399 return self.name | 405 return self.name |
| 400 | 406 |
| 407 def to_str_value(self): | |
| 408 return self.value | |
| 409 | |
| 401 | 410 |
| 402 def generate_param_name(param_type): | 411 def generate_param_name(param_type): |
| 403 base_name = re.match("(const |PassRefPtr<)?(\w*)", param_type).group(2) | 412 base_name = re.match("(const |PassRefPtr<)?(\w*)", param_type).group(2) |
| 404 return "param" + base_name | 413 return "param" + base_name |
| 405 | 414 |
| 406 | 415 |
| 407 def agent_class_name(agent): | 416 def agent_class_name(agent): |
| 408 custom_agent_names = ["PageDebugger", "PageRuntime", "WorkerRuntime"] | 417 custom_agent_names = ["PageDebugger", "PageRuntime", "WorkerRuntime"] |
| 409 if agent in custom_agent_names: | 418 if agent in custom_agent_names: |
| 410 return "%sAgent" % agent | 419 return "%sAgent" % agent |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 513 if not output_dirpath: | 522 if not output_dirpath: |
| 514 raise Exception("Output directory must be specified") | 523 raise Exception("Output directory must be specified") |
| 515 except Exception: | 524 except Exception: |
| 516 # Work with python 2 and 3 http://docs.python.org/py3k/howto/pyporting.html | 525 # Work with python 2 and 3 http://docs.python.org/py3k/howto/pyporting.html |
| 517 exc = sys.exc_info()[1] | 526 exc = sys.exc_info()[1] |
| 518 sys.stderr.write("Failed to parse command-line arguments: %s\n\n" % exc) | 527 sys.stderr.write("Failed to parse command-line arguments: %s\n\n" % exc) |
| 519 sys.stderr.write("Usage: <script> --output_dir <output_dir> InspectorInstrum entation.idl\n") | 528 sys.stderr.write("Usage: <script> --output_dir <output_dir> InspectorInstrum entation.idl\n") |
| 520 exit(1) | 529 exit(1) |
| 521 | 530 |
| 522 generate(input_path, output_dirpath) | 531 generate(input_path, output_dirpath) |
| OLD | NEW |