src/chess/rules.h

changeset 153
bad2d6d4b861
parent 147
7e3f2d462bb6
child 154
5336e985bd69
equal deleted inserted replaced
152:231e5f07a657 153:bad2d6d4b861
143 143
144 #define POS_UNSPECIFIED UINT8_MAX 144 #define POS_UNSPECIFIED UINT8_MAX
145 #define mdst(b,m) b[(m)->torow][(m)->tofile] 145 #define mdst(b,m) b[(m)->torow][(m)->tofile]
146 #define msrc(b,m) b[(m)->fromrow][(m)->fromfile] 146 #define msrc(b,m) b[(m)->fromrow][(m)->fromfile]
147 147
148 /** Checks if the index is specified and valid. */
148 #define isidx(idx) ((uint8_t)(idx) < 8) 149 #define isidx(idx) ((uint8_t)(idx) < 8)
150 /** Checks if the index is unspecified or valid. */
151 #define isidxr(idx) ((idx) == POS_UNSPECIFIED || (uint8_t)(idx) < 8)
149 152
150 #define isfile(file) (file >= 'a' && file <= 'h') 153 #define isfile(file) (file >= 'a' && file <= 'h')
151 #define isrow(row) (row >= '1' && row <= '8') 154 #define isrow(row) (row >= '1' && row <= '8')
152 155
153 #define rowidx(row) (row-'1') 156 #define rowidx(row) (row-'1')
154 #define fileidx(file) (file-'a') 157 #define fileidx(file) (file-'a')
155 158
156 #define rowchr(row) (row+'1') 159 #define rowchr(row) (row+'1')
157 #define filechr(file) (file+'a') 160 #define filechr(file) (file+'a')
158
159 #define chkidx_from(move) (isidx((move)->fromfile) && isidx((move)->fromrow))
160 #define chkidx_to(move) (isidx((move)->tofile) && isidx((move)->torow))
161 #define chkidx(move) (chkidx_from(move) && chkidx_to(move))
162 161
163 /* secure versions - use, if index is not checked with isidx() */ 162 /* secure versions - use, if index is not checked with isidx() */
164 #define fileidx_s(c) (isfile(c)?fileidx(c):POS_UNSPECIFIED) 163 #define fileidx_s(c) (isfile(c)?fileidx(c):POS_UNSPECIFIED)
165 #define rowidx_s(c) (isrow(c)?rowidx(c):POS_UNSPECIFIED) 164 #define rowidx_s(c) (isrow(c)?rowidx(c):POS_UNSPECIFIED)
166 165

mercurial