Skip to content

Commit

Permalink
Remove auto-conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
jmao-denver committed Dec 20, 2023
1 parent 33790ba commit 898f6a5
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 26 deletions.
26 changes: 1 addition & 25 deletions src/main/c/jpy_jtype.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ void JType_InitMethodParamDescriptorFunctions(JPy_JType* type, JPy_JMethod* meth
int JType_ProcessField(JNIEnv* jenv, JPy_JType* declaringType, PyObject* fieldKey, const char* fieldName, jclass fieldClassRef, jboolean isStatic, jboolean isFinal, jfieldID fid);
void JType_DisposeLocalObjectRefArg(JNIEnv* jenv, jvalue* value, void* data);
void JType_DisposeReadOnlyBufferArg(JNIEnv* jenv, jvalue* value, void* data);
void JType_DisposeByteBufferArg(JNIEnv* jenv, jvalue* value, void* data);
void JType_DisposeWritableBufferArg(JNIEnv* jenv, jvalue* value, void* data);


Expand Down Expand Up @@ -1661,10 +1660,6 @@ int JType_MatchPyArgAsJByteBufferParam(JNIEnv* jenv, JPy_ParamDescriptor* paramD
return 1;
}

if (PyObject_CheckBuffer(pyArg) == 1) {
return 100;
}

return JType_MatchPyArgAsJObject(jenv, paramDescriptor->type, pyArg);
}

Expand Down Expand Up @@ -1720,12 +1715,7 @@ PyObject* JType_CreateJavaByteBufferWrapper(JNIEnv* jenv, PyObject* pyObj)

int JType_ConvertPyArgToJByteBufferArg(JNIEnv* jenv, JPy_ParamDescriptor* paramDescriptor, PyObject* pyArg, jvalue* value, JPy_ArgDisposer* disposer)
{
if (PyObject_CheckBuffer(pyArg)) {
disposer->data = JType_CreateJavaByteBufferWrapper(jenv, pyArg);
disposer->DisposeArg = JType_DisposeByteBufferArg;
JPy_JObj* obj = (JPy_JObj*) disposer->data;
value->l = obj->objectRef;
} else if (JObj_Check(pyArg)) {
if (JObj_Check(pyArg)) {
disposer->data = NULL;
// If it is a wrapped Java object, it is always a global reference, so don't dispose it
disposer->DisposeArg = NULL;
Expand Down Expand Up @@ -2454,20 +2444,6 @@ void JType_DisposeLocalObjectRefArg(JNIEnv* jenv, jvalue* value, void* data)
}
}

void JType_DisposeByteBufferArg(JNIEnv* jenv, jvalue* value, void* data)
{
PyObject* byteBufferWrapper = (PyObject*) data;
jobject jByteBuffer = (jobject) value->l;

JPy_DIAG_PRINT(JPy_DIAG_F_MEM, "JType_DisposeByteBufferArg: byteBufferWrapper=%p, jByteBuffer=%p\n", byteBufferWrapper, jByteBuffer);

if (jByteBuffer != NULL) {
JPy_DELETE_LOCAL_REF(jByteBuffer);
}

JPy_DECREF(byteBufferWrapper);
}

void JType_DisposeReadOnlyBufferArg(JNIEnv* jenv, jvalue* value, void* data)
{
Py_buffer* pyBuffer;
Expand Down
3 changes: 2 additions & 1 deletion src/main/c/jpy_module.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ static PyMethodDef JPy_Functions[] = {
"Possible primitive types are 'boolean', 'byte', 'char', 'short', 'int', 'long', 'float', and 'double'."},

{"byte_buffer", JPy_byte_buffer, METH_VARARGS,
"byte_buffer(obj) - Return a new Java direct ByteBuffer referring to the Py_buffer provided by obj via its implemented Buffer Protocol. "},
"byte_buffer(obj) - Return a new Java direct ByteBuffer sharing the same underlying buffer of obj via its implemented Buffer Protocol. The Java direct ByteBuffer is read-only"
"and is only safe to access in Java (e.g. as an argument to a Java method) when it is also referenced in Python."},

{NULL, NULL, 0, NULL} /*Sentinel*/
};
Expand Down

0 comments on commit 898f6a5

Please sign in to comment.