Merge "Checked the flag not set in the correct way" into nyc-dev

This commit is contained in:
Lifu Tang
2016-03-10 18:30:07 +00:00
committed by Android (Google) Code Review

View File

@@ -1087,8 +1087,25 @@ template<>
const char *const JavaMethodHelper<bool>::signature_ = "(Z)V"; const char *const JavaMethodHelper<bool>::signature_ = "(Z)V";
#define SET(setter, value) object.callSetter("set" # setter, (value)) #define SET(setter, value) object.callSetter("set" # setter, (value))
#define SET_IF(flag, setter, value) \
if (flags & (flag)) object.callSetter("set" # setter, (value)) // If you want to check if a flag is not set, use SET_IF_NOT(FLAG, setter,
// value) to do that. SET_IF(!FLAG, setter, value) won't compile.
//
// This macros generates compilation error if the provided 'flag' is not a
// single token. For example, 'GNSS_CLOCK_HAS_BIAS' can be accepted, but
// '!GNSS_CLOCK_HAS_DRIFT' will fail to compile.
#define SET_IF(flag, setter, value) do { \
if (flags & flag) { \
JavaObject& name_check_##flag = object; \
name_check_##flag.callSetter("set" # setter, (value)); \
} \
} while (false)
#define SET_IF_NOT(flag, setter, value) do { \
if (!(flags & flag)) { \
JavaObject& name_check_##flag = object; \
name_check_##flag.callSetter("set" # setter, (value)); \
} \
} while (false)
static jobject translate_gps_clock(JNIEnv* env, GpsClock* clock) { static jobject translate_gps_clock(JNIEnv* env, GpsClock* clock) {
static uint32_t discontinuity_count_to_handle_old_lock_type = 0; static uint32_t discontinuity_count_to_handle_old_lock_type = 0;
@@ -1209,9 +1226,9 @@ static jobject translate_gps_measurement(JNIEnv* env,
static_cast<int32_t>(measurement->multipath_indicator)); static_cast<int32_t>(measurement->multipath_indicator));
SET_IF(GNSS_MEASUREMENT_HAS_SNR, SnrInDb, measurement->snr_db); SET_IF(GNSS_MEASUREMENT_HAS_SNR, SnrInDb, measurement->snr_db);
SET_IF(!GPS_MEASUREMENT_HAS_UNCORRECTED_PSEUDORANGE_RATE, SET_IF_NOT(GPS_MEASUREMENT_HAS_UNCORRECTED_PSEUDORANGE_RATE,
PseudorangeRateCorrected, PseudorangeRateCorrected,
true); true);
return object.get(); return object.get();
} }