| 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 """Extracts native methods from a Java file and generates the JNI bindings. | 6 """Extracts native methods from a Java file and generates the JNI bindings. |
| 7 If you change this, please run and update the tests.""" | 7 If you change this, please run and update the tests.""" |
| 8 | 8 |
| 9 import collections | 9 import collections |
| 10 import errno | 10 import errno |
| (...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 511 | 511 |
| 512 | 512 |
| 513 # Regex to match the JNI types that should be wrapped in a JavaRef. | 513 # Regex to match the JNI types that should be wrapped in a JavaRef. |
| 514 RE_SCOPED_JNI_TYPES = re.compile('jobject|jclass|jstring|jthrowable|.*Array') | 514 RE_SCOPED_JNI_TYPES = re.compile('jobject|jclass|jstring|jthrowable|.*Array') |
| 515 | 515 |
| 516 | 516 |
| 517 # Regex to match a string like "@CalledByNative public void foo(int bar)". | 517 # Regex to match a string like "@CalledByNative public void foo(int bar)". |
| 518 RE_CALLED_BY_NATIVE = re.compile( | 518 RE_CALLED_BY_NATIVE = re.compile( |
| 519 '@CalledByNative(?P<Unchecked>(Unchecked)*?)(?:\("(?P<annotation>.*)"\))?' | 519 '@CalledByNative(?P<Unchecked>(Unchecked)*?)(?:\("(?P<annotation>.*)"\))?' |
| 520 '\s+(?P<prefix>[\w ]*?)' | 520 '\s+(?P<prefix>[\w ]*?)' |
| 521 '(:?\s*@\w+)?' # Ignore annotations in return types. |
| 521 '\s*(?P<return_type>\S+?)' | 522 '\s*(?P<return_type>\S+?)' |
| 522 '\s+(?P<name>\w+)' | 523 '\s+(?P<name>\w+)' |
| 523 '\s*\((?P<params>[^\)]*)\)') | 524 '\s*\((?P<params>[^\)]*)\)') |
| 524 | 525 |
| 525 | 526 |
| 526 def ExtractCalledByNatives(contents): | 527 def ExtractCalledByNatives(contents): |
| 527 """Parses all methods annotated with @CalledByNative. | 528 """Parses all methods annotated with @CalledByNative. |
| 528 | 529 |
| 529 Args: | 530 Args: |
| 530 contents: the contents of the java file. | 531 contents: the contents of the java file. |
| (...skipping 846 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1377 root_name = os.path.splitext(os.path.basename(input_file))[0] | 1378 root_name = os.path.splitext(os.path.basename(input_file))[0] |
| 1378 output_file = os.path.join(options.output_dir, root_name) + '_jni.h' | 1379 output_file = os.path.join(options.output_dir, root_name) + '_jni.h' |
| 1379 GenerateJNIHeader(input_file, output_file, options) | 1380 GenerateJNIHeader(input_file, output_file, options) |
| 1380 | 1381 |
| 1381 if options.depfile: | 1382 if options.depfile: |
| 1382 build_utils.WriteDepfile(options.depfile, output_file) | 1383 build_utils.WriteDepfile(options.depfile, output_file) |
| 1383 | 1384 |
| 1384 | 1385 |
| 1385 if __name__ == '__main__': | 1386 if __name__ == '__main__': |
| 1386 sys.exit(main(sys.argv)) | 1387 sys.exit(main(sys.argv)) |
| OLD | NEW |