From 321eb9b1ca1b230063259dc43be8a2ab2f3bfee9 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 17 Jan 2023 22:16:36 -0800
Subject: [PATCH] Remove 'register' storage class classifier

This is gone with c++17

Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 src/frontend/atak.cc   |  4 ++--
 src/frontend/lexpgn.cc | 34 +++++++++++++++++-----------------
 src/frontend/util.cc   |  2 +-
 3 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/src/frontend/atak.cc b/src/frontend/atak.cc
index ef19d87..640e150 100644
--- a/src/frontend/atak.cc
+++ b/src/frontend/atak.cc
@@ -37,7 +37,7 @@ short SqAtakd (short sq, short side)
  *
  **************************************************************************/
 {
-   register BitBoard *a, b, *c, d, blocker;
+   BitBoard *a, b, *c, d, blocker;
    int t;
 
    a = board.b[side];
@@ -89,7 +89,7 @@ BitBoard AttackTo (int sq, int side)
  *
  ***************************************************************************/
 {
-   register BitBoard *a, b, *c, e, blocker;
+   BitBoard *a, b, *c, e, blocker;
    int t;
 
    a = board.b[side];
diff --git a/src/frontend/lexpgn.cc b/src/frontend/lexpgn.cc
index 475899d..971aa13 100644
--- a/src/frontend/lexpgn.cc
+++ b/src/frontend/lexpgn.cc
@@ -2431,9 +2431,9 @@ extern int yylex (void);
  */
 YY_DECL
 {
-	register yy_state_type yy_current_state;
-	register char *yy_cp, *yy_bp;
-	register int yy_act;
+	yy_state_type yy_current_state;
+	char *yy_cp, *yy_bp;
+	int yy_act;
     
 #line 153 "lexpgn.ll"
 
@@ -3118,9 +3118,9 @@ case YY_STATE_EOF(RAV):
  */
 static int yy_get_next_buffer (void)
 {
-    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-	register char *source = (yytext_ptr);
-	register int number_to_move, i;
+    	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+	char *source = (yytext_ptr);
+	int number_to_move, i;
 	int ret_val;
 
 	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
@@ -3252,8 +3252,8 @@ static int yy_get_next_buffer (void)
 
     static yy_state_type yy_get_previous_state (void)
 {
-	register yy_state_type yy_current_state;
-	register char *yy_cp;
+	yy_state_type yy_current_state;
+	char *yy_cp;
     
 	yy_current_state = (yy_start);
 	yy_current_state += YY_AT_BOL();
@@ -3278,8 +3278,8 @@ static int yy_get_next_buffer (void)
  */
     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
 {
-	register int yy_is_jam;
-    	register char *yy_cp = (yy_c_buf_p);
+	int yy_is_jam;
+    	char *yy_cp = (yy_c_buf_p);
 
 	yy_current_state = yy_nxt[yy_current_state][1];
 	yy_is_jam = (yy_current_state <= 0);
@@ -3296,9 +3296,9 @@ static int yy_get_next_buffer (void)
 	return yy_is_jam ? 0 : yy_current_state;
 }
 
-    static void yyunput (int c, register char * yy_bp )
+    static void yyunput (int c, char * yy_bp )
 {
-	register char *yy_cp;
+	char *yy_cp;
     
     yy_cp = (yy_c_buf_p);
 
@@ -3308,10 +3308,10 @@ static int yy_get_next_buffer (void)
 	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
 		{ /* need to shift things up to make room */
 		/* +2 for EOB chars. */
-		register yy_size_t number_to_move = (yy_n_chars) + 2;
-		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+		yy_size_t number_to_move = (yy_n_chars) + 2;
+		char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
 					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
-		register char *source =
+		char *source =
 				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
 
 		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
@@ -3925,7 +3925,7 @@ int yylex_destroy  (void)
 #ifndef yytext_ptr
 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
 {
-	register int i;
+	int i;
 	for ( i = 0; i < n; ++i )
 		s1[i] = s2[i];
 }
@@ -3934,7 +3934,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
 #ifdef YY_NEED_STRLEN
 static int yy_flex_strlen (yyconst char * s )
 {
-	register int n;
+	int n;
 	for ( n = 0; s[n]; ++n )
 		;
 
diff --git a/src/frontend/util.cc b/src/frontend/util.cc
index 5d3efe2..f7f7f1d 100644
--- a/src/frontend/util.cc
+++ b/src/frontend/util.cc
@@ -75,7 +75,7 @@ void UpdateFriends (void)
  *
  ***************************************************************************/
 {
-   register BitBoard *w, *b;
+   BitBoard *w, *b;
 
    w = board.b[white];
    b = board.b[black];
-- 
2.39.1

