Smarter MIN, MAX, ABS macros
Use macros that explicitly avoid double-evaluation and can be used for any datatype, replacing `min`, `max`, `abs`, `fabs`, `labs`, and `FABS`. Co-Authored-By: ejtagle <ejtagle@hotmail.com>
This commit is contained in:
@ -75,7 +75,7 @@ int inbound_count;
|
||||
// Everything written needs the high bit set.
|
||||
void write_to_lcd_P(const char * const message) {
|
||||
char encoded_message[MAX_CURLY_COMMAND];
|
||||
uint8_t message_length = min(strlen_P(message), sizeof(encoded_message));
|
||||
uint8_t message_length = MIN(strlen_P(message), sizeof(encoded_message));
|
||||
|
||||
for (uint8_t i = 0; i < message_length; i++)
|
||||
encoded_message[i] = pgm_read_byte(&message[i]) | 0x80;
|
||||
@ -85,7 +85,7 @@ void write_to_lcd_P(const char * const message) {
|
||||
|
||||
void write_to_lcd(const char * const message) {
|
||||
char encoded_message[MAX_CURLY_COMMAND];
|
||||
const uint8_t message_length = min(strlen(message), sizeof(encoded_message));
|
||||
const uint8_t message_length = MIN(strlen(message), sizeof(encoded_message));
|
||||
|
||||
for (uint8_t i = 0; i < message_length; i++)
|
||||
encoded_message[i] = message[i] | 0x80;
|
||||
|
@ -629,7 +629,7 @@ uint16_t max_display_update_time = 0;
|
||||
screen_changed = false;
|
||||
}
|
||||
if (screen_items > 0 && encoderLine >= screen_items - limit) {
|
||||
encoderLine = max(0, screen_items - limit);
|
||||
encoderLine = MAX(0, screen_items - limit);
|
||||
encoderPosition = encoderLine * (ENCODER_STEPS_PER_MENU_ITEM);
|
||||
}
|
||||
if (is_menu) {
|
||||
@ -1579,7 +1579,7 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
*
|
||||
*/
|
||||
void _lcd_preheat(const int16_t endnum, const int16_t temph, const int16_t tempb, const int16_t fan) {
|
||||
if (temph > 0) thermalManager.setTargetHotend(min(heater_maxtemp[endnum], temph), endnum);
|
||||
if (temph > 0) thermalManager.setTargetHotend(MIN(heater_maxtemp[endnum], temph), endnum);
|
||||
#if HAS_HEATED_BED
|
||||
if (tempb >= 0) thermalManager.setTargetBed(tempb);
|
||||
#else
|
||||
@ -2118,7 +2118,7 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
char UBL_LCD_GCODE[16];
|
||||
const int ind = ubl_height_amount > 0 ? 9 : 10;
|
||||
strcpy_P(UBL_LCD_GCODE, PSTR("G29 P6 C -"));
|
||||
sprintf_P(&UBL_LCD_GCODE[ind], PSTR(".%i"), abs(ubl_height_amount));
|
||||
sprintf_P(&UBL_LCD_GCODE[ind], PSTR(".%i"), ABS(ubl_height_amount));
|
||||
lcd_enqueue_command(UBL_LCD_GCODE);
|
||||
}
|
||||
|
||||
@ -2441,7 +2441,7 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
if (encoderPosition) {
|
||||
step_scaler += (int32_t)encoderPosition;
|
||||
x_plot += step_scaler / (ENCODER_STEPS_PER_MENU_ITEM);
|
||||
if (abs(step_scaler) >= ENCODER_STEPS_PER_MENU_ITEM) step_scaler = 0;
|
||||
if (ABS(step_scaler) >= ENCODER_STEPS_PER_MENU_ITEM) step_scaler = 0;
|
||||
encoderPosition = 0;
|
||||
lcdDrawUpdate = LCDVIEW_REDRAW_NOW;
|
||||
}
|
||||
@ -2853,7 +2853,7 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
do_blocking_move_to_xy(rx, ry);
|
||||
|
||||
lcd_synchronize();
|
||||
move_menu_scale = max(PROBE_MANUALLY_STEP, MIN_STEPS_PER_SEGMENT / float(DEFAULT_XYZ_STEPS_PER_UNIT));
|
||||
move_menu_scale = MAX(PROBE_MANUALLY_STEP, MIN_STEPS_PER_SEGMENT / float(DEFAULT_XYZ_STEPS_PER_UNIT));
|
||||
lcd_goto_screen(lcd_move_z);
|
||||
}
|
||||
|
||||
@ -3625,8 +3625,8 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
||||
#define MINTEMP_ALL MIN3(HEATER_0_MINTEMP, HEATER_1_MINTEMP, HEATER_2_MINTEMP)
|
||||
#define MAXTEMP_ALL MAX3(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP)
|
||||
#elif HOTENDS > 1
|
||||
#define MINTEMP_ALL min(HEATER_0_MINTEMP, HEATER_1_MINTEMP)
|
||||
#define MAXTEMP_ALL max(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP)
|
||||
#define MINTEMP_ALL MIN(HEATER_0_MINTEMP, HEATER_1_MINTEMP)
|
||||
#define MAXTEMP_ALL MAX(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP)
|
||||
#else
|
||||
#define MINTEMP_ALL HEATER_0_MINTEMP
|
||||
#define MAXTEMP_ALL HEATER_0_MAXTEMP
|
||||
@ -5229,7 +5229,7 @@ void lcd_update() {
|
||||
|
||||
#endif
|
||||
|
||||
const bool encoderPastThreshold = (abs(encoderDiff) >= ENCODER_PULSES_PER_STEP);
|
||||
const bool encoderPastThreshold = (ABS(encoderDiff) >= ENCODER_PULSES_PER_STEP);
|
||||
if (encoderPastThreshold || lcd_clicked) {
|
||||
if (encoderPastThreshold) {
|
||||
int32_t encoderMultiplier = 1;
|
||||
@ -5237,7 +5237,7 @@ void lcd_update() {
|
||||
#if ENABLED(ENCODER_RATE_MULTIPLIER)
|
||||
|
||||
if (encoderRateMultiplierEnabled) {
|
||||
int32_t encoderMovementSteps = abs(encoderDiff) / ENCODER_PULSES_PER_STEP;
|
||||
int32_t encoderMovementSteps = ABS(encoderDiff) / ENCODER_PULSES_PER_STEP;
|
||||
|
||||
if (lastEncoderMovementMillis) {
|
||||
// Note that the rate is always calculated between two passes through the
|
||||
|
@ -534,7 +534,7 @@ void lcd_implementation_clear() { } // Automatically cleared by Picture Loop
|
||||
name_hash = ((name_hash << 1) | (name_hash >> 7)) ^ filename[l]; // rotate, xor
|
||||
if (filename_scroll_hash != name_hash) { // If the hash changed...
|
||||
filename_scroll_hash = name_hash; // Save the new hash
|
||||
filename_scroll_max = max(0, utf8_strlen(longFilename) - maxlen); // Update the scroll limit
|
||||
filename_scroll_max = MAX(0, utf8_strlen(longFilename) - maxlen); // Update the scroll limit
|
||||
filename_scroll_pos = 0; // Reset scroll to the start
|
||||
lcd_status_update_delay = 8; // Don't scroll right away
|
||||
}
|
||||
|
@ -352,12 +352,12 @@ void lcd_implementation_clear() { lcd.clear(); }
|
||||
lcd_put_u8str(text);
|
||||
#else
|
||||
char tmp[LCD_WIDTH + 1] = {0};
|
||||
int16_t n = max(utf8_strlen_P(text) - len, 0);
|
||||
int16_t n = MAX(utf8_strlen_P(text) - len, 0);
|
||||
for (int16_t i = 0; i <= n; i++) {
|
||||
utf8_strncpy_p(tmp, text + i, min(len, LCD_WIDTH));
|
||||
utf8_strncpy_p(tmp, text + i, MIN(len, LCD_WIDTH));
|
||||
lcd_moveto(col, line);
|
||||
lcd_put_u8str(tmp);
|
||||
delay(time / max(n, 1));
|
||||
delay(time / MAX(n, 1));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -875,7 +875,7 @@ static void lcd_implementation_status_screen() {
|
||||
name_hash = ((name_hash << 1) | (name_hash >> 7)) ^ filename[l]; // rotate, xor
|
||||
if (filename_scroll_hash != name_hash) { // If the hash changed...
|
||||
filename_scroll_hash = name_hash; // Save the new hash
|
||||
filename_scroll_max = max(0, utf8_strlen(longFilename) - n); // Update the scroll limit
|
||||
filename_scroll_max = MAX(0, utf8_strlen(longFilename) - n); // Update the scroll limit
|
||||
filename_scroll_pos = 0; // Reset scroll to the start
|
||||
lcd_status_update_delay = 8; // Don't scroll right away
|
||||
}
|
||||
@ -1186,7 +1186,7 @@ static void lcd_implementation_status_screen() {
|
||||
//dump_custom_char("at entry:", &new_char);
|
||||
|
||||
clear_custom_char(&new_char);
|
||||
const uint8_t ypix = min(upper_left.y_pixel_offset + pixels_per_y_mesh_pnt, ULTRA_Y_PIXELS_PER_CHAR);
|
||||
const uint8_t ypix = MIN(upper_left.y_pixel_offset + pixels_per_y_mesh_pnt, ULTRA_Y_PIXELS_PER_CHAR);
|
||||
for (j = upper_left.y_pixel_offset; j < ypix; j++) {
|
||||
i = upper_left.x_pixel_mask;
|
||||
for (k = 0; k < pixels_per_x_mesh_pnt; k++) {
|
||||
|
Reference in New Issue
Block a user