mercurial/util.h
changeset 32378 7d0c69505a66
parent 30112 9b6ff0f940ed
equal deleted inserted replaced
32377:c942c83ac2ec 32378:7d0c69505a66
    40 typedef unsigned char bool;
    40 typedef unsigned char bool;
    41 #else
    41 #else
    42 #include <stdbool.h>
    42 #include <stdbool.h>
    43 #endif
    43 #endif
    44 
    44 
       
    45 static int8_t hextable[256] = {
       
    46 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
       
    47 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
       
    48 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
       
    49 	 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, -1, -1, -1, -1, -1, -1, /* 0-9 */
       
    50 	-1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* A-F */
       
    51 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
       
    52 	-1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* a-f */
       
    53 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
       
    54 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
       
    55 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
       
    56 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
       
    57 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
       
    58 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
       
    59 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
       
    60 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
       
    61 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
       
    62 };
       
    63 
       
    64 static inline int hexdigit(const char *p, Py_ssize_t off)
       
    65 {
       
    66 	int8_t val = hextable[(unsigned char)p[off]];
       
    67 
       
    68 	if (val >= 0) {
       
    69 		return val;
       
    70 	}
       
    71 
       
    72 	PyErr_SetString(PyExc_ValueError, "input contains non-hex character");
       
    73 	return 0;
       
    74 }
       
    75 
    45 #endif /* _HG_UTIL_H_ */
    76 #endif /* _HG_UTIL_H_ */