# Clarify some or exclusive expressions

From: Roberto E. Vargas Caballero <k0ga_AT_shike2.com>
Date: Wed, 7 Nov 2012 10:53:26 +0100

Since relational expresions are always evaluated to 0 or 1, we can use
bitwise xor operator instead of using more complex boolean expressions.
```---
st.c |   14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/st.c b/st.c
index af8bd9a..faaca74 100644
--- a/st.c
+++ b/st.c
_AT_@ -1473,15 +1473,15 @@ tsetmode(bool priv, bool set, int *args, int narg) {
break;
case 1049: /* = 1047 and 1048 */
case 47:
-			case 1047:
-				if(IS_SET(MODE_ALTSCREEN))
+			case 1047: {
+				bool alt = IS_SET(MODE_ALTSCREEN) != 0;
+				if(alt)
tclearregion(0, 0, term.col-1, term.row-1);
-				if((set && !IS_SET(MODE_ALTSCREEN)) ||
-						(!set && IS_SET(MODE_ALTSCREEN))) {
+				if(set ^ alt)		/* set is always 1 or 0 */
tswapscreen();
-				}
if(*args != 1049)
break;
+			}
/* pass through */
case 1048:
_AT_@ -2543,9 +2543,9 @@ drawregion(int x1, int y1, int x2, int y2) {
int ic, ib, x, y, ox, sl;
Glyph base, new;
char buf[DRAW_BUF_SIZ];
-	bool ena_sel = sel.bx != -1, alt = IS_SET(MODE_ALTSCREEN);
+	bool ena_sel = sel.bx != -1, alt = IS_SET(MODE_ALTSCREEN) != 0;

-	if((sel.alt && !alt) || (!sel.alt && alt))
+	if((sel.alt != 0) ^ alt)
ena_sel = 0;
if(!(xw.state & WIN_VISIBLE))
return;
--
1.7.10.4
--lrZ03NoBR/3+SXJZ--
```
Received on Mon Sep 17 2001 - 00:00:00 CEST

This archive was generated by hypermail 2.3.0 : Wed Nov 07 2012 - 13:00:03 CET