Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
This repository was archived by the owner on Aug 31, 2021. It is now read-only.

Commit c2c3972

Browse filesBrowse files
committed
[[ Java ]] Implement jobjectArray <-> List of MCJavaObjectRef
1 parent 9c23059 commit c2c3972
Copy full SHA for c2c3972

File tree

4 files changed

+66
-1
lines changed
Filter options

4 files changed

+66
-1
lines changed

‎libfoundation/include/foundation.h

Copy file name to clipboardExpand all lines: libfoundation/include/foundation.h
+4-1Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2008,7 +2008,10 @@ MC_DLLEXPORT bool MCJavaConvertStringRefToJString(MCStringRef p_string, MCJavaOb
20082008
MC_DLLEXPORT bool MCJavaConvertJByteArrayToDataRef(MCJavaObjectRef p_object, MCDataRef &r_data);
20092009
// Convert a Data Ref to a Java object wrapping a jByteArray
20102010
MC_DLLEXPORT bool MCJavaConvertDataRefToJByteArray(MCDataRef p_data, MCJavaObjectRef &r_object);
2011-
2011+
2012+
MC_DLLEXPORT bool MCJavaConvertProperListRefToJObjectArray(MCProperListRef p_list, MCStringRef p_class_name, MCJavaObjectRef &r_obj_array);
2013+
MC_DLLEXPORT bool MCJavaConvertJObjectArrayToProperListRef(MCJavaObjectRef p_obj_array, MCProperListRef &r_list);
2014+
20122015
////////////////////////////////////////////////////////////////////////////////
20132016
//
20142017
// BOOLEAN DEFINITIONS

‎libfoundation/src/foundation-java-private.cpp

Copy file name to clipboardExpand all lines: libfoundation/src/foundation-java-private.cpp
+40Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,46 @@ static bool __MCJavaProperListFromJObjectArray(jobjectArray p_obj_array, MCPrope
509509
return MCProperListCopy(*t_list, r_list);
510510
}
511511

512+
bool MCJavaPrivateProperListFromJObjectArray(MCJavaObjectRef p_obj_array, MCProperListRef& r_list)
513+
{
514+
jobjectArray t_obj_array = static_cast<jobjectArray>(MCJavaObjectGetObject(static_cast<MCJavaObjectRef>(p_obj_array)));
515+
if (t_obj_array == nullptr)
516+
{
517+
return false;
518+
}
519+
520+
return __MCJavaProperListFromJObjectArray(t_obj_array, r_list);
521+
}
522+
523+
static jclass MCJavaPrivateFindClass(MCNameRef p_class_name);
524+
525+
bool MCJavaPrivateProperListToJObjectArray(MCProperListRef p_list, MCNameRef p_class_name, MCJavaObjectRef &r_obj_array)
526+
{
527+
MCJavaDoAttachCurrentThread();
528+
529+
jclass t_class = MCJavaPrivateFindClass(p_class_name);
530+
531+
uindex_t t_size = MCProperListGetLength(p_list);
532+
jobjectArray t_obj_array = s_env -> NewObjectArray(t_size, t_class, nullptr);
533+
534+
if (t_obj_array == nullptr)
535+
return false;
536+
537+
for (uint32_t i = 0; i < t_size; i++)
538+
{
539+
MCValueRef t_value;
540+
t_value = MCProperListFetchElementAtIndex(p_list, i);
541+
if (MCValueGetTypeInfo(t_value) == MCJavaGetObjectTypeInfo())
542+
{
543+
jobject t_object = static_cast<jobject>(MCJavaObjectGetObject(static_cast<MCJavaObjectRef>(t_value)));
544+
545+
s_env -> SetObjectArrayElement(t_obj_array, i, t_object);
546+
}
547+
}
548+
549+
return MCJavaObjectCreate(t_obj_array, r_obj_array);
550+
}
551+
512552
void* MCJavaPrivateGlobalRef(void *p_object)
513553
{
514554
MCJavaDoAttachCurrentThread();

‎libfoundation/src/foundation-java-private.h

Copy file name to clipboardExpand all lines: libfoundation/src/foundation-java-private.h
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ void MCJavaPrivateDestroyObject(MCJavaObjectRef p_object);
6969
bool MCJavaPrivateCheckSignature(MCTypeInfoRef p_signature, MCStringRef p_args, MCStringRef p_return, int p_call_type);
7070
bool MCJavaPrivateGetJObjectClassName(MCJavaObjectRef p_object, MCStringRef &r_name);
7171

72+
bool MCJavaPrivateProperListFromJObjectArray(MCJavaObjectRef p_obj_array, MCProperListRef& r_list);
73+
bool MCJavaPrivateProperListToJObjectArray(MCProperListRef p_list, MCNameRef p_class_name, MCJavaObjectRef &r_obj_array);
74+
7275
void* MCJavaPrivateGlobalRef(void *p_object);
7376

7477
bool MCJavaPrivateErrorThrow(MCTypeInfoRef p_error);

‎libfoundation/src/foundation-java.cpp

Copy file name to clipboardExpand all lines: libfoundation/src/foundation-java.cpp
+19Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,3 +220,22 @@ MC_DLLEXPORT bool MCJavaGetJObjectClassName(MCJavaObjectRef p_object, MCStringRe
220220

221221
return MCJavaPrivateGetJObjectClassName(p_object, r_name);
222222
}
223+
224+
MC_DLLEXPORT bool MCJavaConvertProperListRefToJObjectArray(MCProperListRef p_list, MCStringRef p_class_name, MCJavaObjectRef &r_obj_array)
225+
{
226+
if (!s_java_initialised)
227+
return MCJavaPrivateErrorThrow(kMCJavaJRENotSupportedErrorTypeInfo);
228+
229+
MCNewAutoNameRef t_class_name;
230+
return MCNameCreate(p_class_name, &t_class_name) && \
231+
MCJavaPrivateProperListToJObjectArray(p_list, *t_class_name, r_obj_array);
232+
}
233+
234+
MC_DLLEXPORT bool MCJavaConvertJObjectArrayToProperListRef(MCJavaObjectRef p_obj_array, MCProperListRef &r_list)
235+
{
236+
if (!s_java_initialised)
237+
return MCJavaPrivateErrorThrow(kMCJavaJRENotSupportedErrorTypeInfo);
238+
239+
return MCJavaPrivateProperListFromJObjectArray(p_obj_array, r_list);
240+
}
241+

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.