blob: b83e94c551b22c312698fb0047080aa7e02bca56 [file]
{TARGET_TYPE} retrieve{PTYPE}Field(String className, String fieldName, String signature) {
return using((Arena arena) {
final arena = Arena();
final env = getEnv();
final classNameChars = className.toNativeChars(arena);
final fieldNameChars = fieldName.toNativeChars(arena);
final signatueChars = signature.toNativeChars(arena);
final cls = _bindings.LoadClass(classNameChars);
if (cls == nullptr) {
env.checkException();
}
final fieldID = env.GetStaticFieldID(cls, fieldNameChars, signatueChars);
if (fieldID == nullptr) {
try {
env.checkException();
} catch (e) {
env.DeleteLocalRef(cls);
rethrow;
}
}
final result = env.GetStatic{TYPE}Field(cls, fieldID);
{CLS_REF_DEL}
{STR_REF_DEL}
env.checkException();
{INVOKE_RESULT};
});
}