@@ -185,20 +185,18 @@ MethodCallResult MethodInvoker::invoke(std::weak_ptr<Instance>& instance, alias_
185185 return extract (instance, type, it, end);
186186 });
187187
188- #define CASE_PRIMITIVE (KEY, TYPE, METHOD ) \
189- case KEY: { \
190- auto result = env->Call ## METHOD ## MethodA (module .get (), method_, args); \
191- throwPendingJniExceptionAsCppException (); \
192- return folly::dynamic (result); \
193- }
188+ #define PRIMITIVE_CASE (METHOD ) { \
189+ auto result = env->Call ## METHOD ## MethodA (module .get (), method_, args); \
190+ throwPendingJniExceptionAsCppException (); \
191+ return folly::dynamic (result); \
192+ }
194193
195- #define CASE_OBJECT (KEY, JNI_CLASS, ACTIONS ) \
196- case KEY: { \
197- auto jobject = env->CallObjectMethodA (module .get (), method_, args); \
198- throwPendingJniExceptionAsCppException (); \
199- auto result = adopt_local (static_cast <JNI_CLASS::javaobject>(jobject)); \
200- return folly::dynamic (result->ACTIONS ); \
201- }
194+ #define OBJECT_CASE (JNI_CLASS, ACTIONS ) { \
195+ auto jobject = env->CallObjectMethodA (module .get (), method_, args); \
196+ throwPendingJniExceptionAsCppException (); \
197+ auto result = adopt_local (static_cast <JNI_CLASS::javaobject>(jobject)); \
198+ return folly::dynamic (result->ACTIONS ()); \
199+ }
202200
203201 char returnType = signature_.at (0 );
204202 switch (returnType) {
@@ -207,18 +205,29 @@ MethodCallResult MethodInvoker::invoke(std::weak_ptr<Instance>& instance, alias_
207205 throwPendingJniExceptionAsCppException ();
208206 return folly::none;
209207
210- CASE_PRIMITIVE (' z' , jboolean, Boolean)
211- CASE_OBJECT (' Z' , JBoolean, value ())
212- CASE_PRIMITIVE (' i' , jint, Int)
213- CASE_OBJECT (' I' , JInteger, value ())
214- CASE_PRIMITIVE (' d' , jdouble, Double)
215- CASE_OBJECT (' D' , JDouble, value ())
216- CASE_PRIMITIVE (' f' , jfloat, Float)
217- CASE_OBJECT (' F' , JFloat, value ())
218-
219- CASE_OBJECT (' S' , JString, toStdString ())
220- CASE_OBJECT (' M' , WritableNativeMap, cthis ()->consume ())
221- CASE_OBJECT (' A' , WritableNativeArray, cthis ()->consume ())
208+ case ' z' :
209+ PRIMITIVE_CASE (Boolean)
210+ case ' Z' :
211+ OBJECT_CASE (JBoolean, value)
212+ case ' i' :
213+ PRIMITIVE_CASE (Int)
214+ case ' I' :
215+ OBJECT_CASE (JInteger, value)
216+ case ' d' :
217+ PRIMITIVE_CASE (Double)
218+ case ' D' :
219+ OBJECT_CASE (JDouble, value)
220+ case ' f' :
221+ PRIMITIVE_CASE (Float)
222+ case ' F' :
223+ OBJECT_CASE (JFloat, value)
224+
225+ case ' S' :
226+ OBJECT_CASE (JString, toStdString)
227+ case ' M' :
228+ OBJECT_CASE (WritableNativeMap, cthis ()->consume )
229+ case ' A' :
230+ OBJECT_CASE (WritableNativeArray, cthis ()->consume )
222231
223232 default :
224233 LOG (FATAL) << " Unknown return type: " << returnType;
0 commit comments