Index: base/android/jni_generator/jni_generator.py |
diff --git a/base/android/jni_generator/jni_generator.py b/base/android/jni_generator/jni_generator.py |
index 782e76a6611abe063e5a3164b4fdc88d59ae509d..649182a9e9f446f598a019e5b7456738de0e248a 100755 |
--- a/base/android/jni_generator/jni_generator.py |
+++ b/base/android/jni_generator/jni_generator.py |
@@ -53,7 +53,7 @@ class NativeMethod(object): |
assert type(self.params) is list |
assert type(self.params[0]) is Param |
if (self.params and |
- self.params[0].datatype == 'int' and |
+ self.params[0].datatype == kwargs.get('ptr_type', 'int') and |
self.params[0].name.startswith('native')): |
self.type = 'method' |
self.p0_type = self.params[0].name[len('native'):] |
@@ -290,7 +290,7 @@ def ExtractFullyQualifiedJavaClassName(java_file_name, contents): |
os.path.splitext(os.path.basename(java_file_name))[0]) |
-def ExtractNatives(contents): |
+def ExtractNatives(contents, ptr_type): |
"""Returns a list of dict containing information about a native method.""" |
contents = contents.replace('\n', '') |
natives = [] |
@@ -307,7 +307,8 @@ def ExtractNatives(contents): |
native_class_name=match.group('native_class_name'), |
return_type=match.group('return_type'), |
name=match.group('name').replace('native', ''), |
- params=JniParams.Parse(match.group('params'))) |
+ params=JniParams.Parse(match.group('params')), |
+ ptr_type=ptr_type) |
natives += [native] |
return natives |
@@ -530,7 +531,7 @@ class JNIFromJavaSource(object): |
JniParams.SetFullyQualifiedClass(fully_qualified_class) |
JniParams.ExtractImportsAndInnerClasses(contents) |
jni_namespace = ExtractJNINamespace(contents) |
- natives = ExtractNatives(contents) |
+ natives = ExtractNatives(contents, options.ptr_type) |
called_by_natives = ExtractCalledByNatives(contents) |
if len(natives) == 0 and len(called_by_natives) == 0: |
raise SyntaxError('Unable to find any JNI methods for %s.' % |
@@ -1073,6 +1074,11 @@ See SampleForTests.java for more details. |
option_parser.add_option('--script_name', default=GetScriptName(), |
help='The name of this script in the generated ' |
'header.') |
+ option_parser.add_option('--ptr_type', default='int', |
+ type='choice', choices=['int', 'long'], |
+ help='The type used to represent native pointers in ' |
+ 'Java code. For 32-bit, use int; ' |
+ 'for 64-bit, use long.') |
options, args = option_parser.parse_args(argv) |
if options.jar_file: |
input_file = ExtractJarInputFile(options.jar_file, options.input_file, |