Fixed Java's genwrapper when byte[] in method's arguments

This commit is contained in:
Sylvain Berfini 2017-10-17 16:57:32 +02:00
parent 8882c8e285
commit 8906a4d89b
2 changed files with 11 additions and 3 deletions

View file

@ -381,6 +381,7 @@ class JavaTranslator(object):
methodDict['objects'] = []
methodDict['lists'] = []
methodDict['array'] = []
methodDict['bytes'] = []
methodDict['returnedObjectGetter'] = ''
for arg in _method.args:
methodDict['params'] += ', '
@ -411,7 +412,10 @@ class JavaTranslator(object):
methodDict['params_impl'] += '(' + argCType + ') ' + argname
elif type(arg.type) is AbsApi.BaseType:
if arg.type.name == 'string':
if arg.type.name == 'integer' and arg.type.size is not None and arg.type.isref:
methodDict['bytes'].append({'bytesargname': argname, 'bytesargtype' : self.translate_as_c_base_type(arg.type)})
methodDict['params_impl'] += 'c_' + argname
elif arg.type.name == 'string':
methodDict['strings'].append({'string': argname})
methodDict['params_impl'] += 'c_' + argname
else:

View file

@ -286,7 +286,9 @@ jobject {{jni_package}}CoreImpl_getMediastreamerFactory(JNIEnv *env, jobject thi
{{return}} {{name}}({{params}}) {
{{#notStatic}}{{classCName}} *cptr = ({{classCName}}*)ptr;{{/notStatic}}{{#strings}}
const char* c_{{string}} = GetStringUTFChars(env, {{string}});
{{/strings}}{{#objects}}
{{/strings}}{{#bytes}}
{{bytesargtype}} c_{{bytesargname}} = ({{bytesargtype}})env->GetByteArrayElements({{bytesargname}}, NULL);
{{/bytes}}{{#objects}}
{{objectClassCName}}* c_{{object}} = NULL;
if ({{object}}) c_{{object}} = ({{objectClassCName}}*)GetObjectNativePtr(env, {{object}});
{{/objects}}{{#lists}}
@ -340,7 +342,9 @@ jobject {{jni_package}}CoreImpl_getMediastreamerFactory(JNIEnv *env, jobject thi
{{#hasReturn}}{{return}} jni_result = ({{return}}){{#returnObject}}get{{returnClassName}}(env, (Linphone{{returnClassName}} *){{/returnObject}}{{/hasReturn}}{{c_name}}({{#notStatic}}cptr{{/notStatic}}{{params_impl}}){{#returnObject}}){{/returnObject}};
{{/hasNormalReturn}}{{#strings}}
ReleaseStringUTFChars(env, {{string}}, c_{{string}});
{{/strings}}{{#hasReturn}}return jni_result;{{/hasReturn}}{{#hasListReturn}}return jni_list_result;{{/hasListReturn}}
{{/strings}}{{#bytes}}
env->ReleaseByteArrayElements({{bytesargname}}, (jbyte*)c_{{bytesargname}}, JNI_ABORT);
{{/bytes}}{{#hasReturn}}return jni_result;{{/hasReturn}}{{#hasListReturn}}return jni_list_result;{{/hasListReturn}}
}
{{/methods}}