Skip to content

Commit a8a29a9

Browse files
javachefacebook-github-bot
authored andcommitted
Simplify macro usage in MethodInvoker
Reviewed By: kathryngray Differential Revision: D5363934 fbshipit-source-id: a9cffb10b4d6244d1d66267f6c1e07ba69663b9c
1 parent 9108f98 commit a8a29a9

File tree

1 file changed

+34
-25
lines changed

1 file changed

+34
-25
lines changed

ReactAndroid/src/main/jni/react/jni/MethodInvoker.cpp

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)