代码:
//
// CAsciiCharacters
//
/*
[dev]
* http://tongj.bokee.com/1649370.html
*/
#define __M_BASE_ASCII_Definition( TChar, prefix ) \
static const TChar \
NUL = prefix##'\0', /* Null char */ \
/* 001 SOH(Start of Header) */ \
/* 002 STX(Start of Text) */ \
/* 003 ETX(End of Text) */ \
/* 004 EOT(End of Transmission) */ \
/* 005 ENQ(Enquiry) */ \
/* 006 ACK(Acknowledgment) */ \
BEL = prefix##'\a', /* Bell */ \
BS = prefix##'\b', /* Backspace */ \
HT = prefix##'\t', /* Horizontal tab */ \
LF = prefix##'\n', /* Line feed */ \
VT = prefix##'\v', /* Vertical tab */ \
FF = prefix##'\f', /* Form feed */ \
CR = prefix##'\r', /* Carriage return */ \
/* 014 SO(Shift Out) */ \
/* 015 SI(Shift In) */ \
/* 016 DLE(Data Link Escape) */ \
/* 017 DC1(XON)(Device Control 1) */ \
/* 018 DC2(Device Control 2) */ \
/* 019 DC3(XOFF)(Device Control 3) */ \
/* 020 DC4(Device Control 4) */ \
/* 021 NAK(Negative Acknowledgement) */ \
/* 022 SYN(Synchronous Idle) */ \
/* 023 ETB(End of Trans. Block) */ \
/* 024 CAN(Cancel) */ \
/* 025 EM(End of Medium) */ \
/* 026 SUB(Substitute) */ \
/* 027 ESC(Escape) */ \
/* 028 FS(File Separator) */ \
/* 029 GS(Group Separator) */ \
/* 030 RS(Request to Send)(Record Separator) */ \
/* 031 US(Unit Separator) */ \
space = prefix##' ', \
exclamation_mark = prefix##'!', \
double_quote = prefix##'\"', \
number_sign = prefix##'#', \
dollar_sign = prefix##'$', \
percent = prefix##'%', \
ampersand = prefix##'&', \
single_quote = prefix##'\'', \
left_parenthesis = prefix##'(', \
right_parenthesis = prefix##')', \
asterisk = prefix##'*', \
plus = prefix##'+', \
comma = prefix##',', \
minus = prefix##'-', \
dot = prefix##'.', \
forward_slash = prefix##'/', \
num_0 = prefix##'0', \
num_1 = prefix##'1', \
num_2 = prefix##'2', \
num_3 = prefix##'3', \
num_4 = prefix##'4', \
num_5 = prefix##'5', \
num_6 = prefix##'6', \
num_7 = prefix##'7', \
num_8 = prefix##'8', \
num_9 = prefix##'9', \
colon = prefix##':', \
semi_colon = prefix##';', \
less_than = prefix##'<', \
equal_sign = prefix##'=', \
greater_than = prefix##'>', \
question_mark = prefix##'?', \
at_symbol = prefix##'@', \
letter_A = prefix##'A', \
letter_B = prefix##'B', \
letter_C = prefix##'C', \
letter_D = prefix##'D', \
letter_E = prefix##'E', \
letter_F = prefix##'F', \
letter_G = prefix##'G', \
letter_H = prefix##'H', \
letter_I = prefix##'I', \
letter_J = prefix##'J', \
letter_K = prefix##'K', \
letter_L = prefix##'L', \
letter_M = prefix##'M', \
letter_N = prefix##'N', \
letter_O = prefix##'O', \
letter_P = prefix##'P', \
letter_Q = prefix##'Q', \
letter_R = prefix##'R', \
letter_S = prefix##'S', \
letter_T = prefix##'T', \
letter_U = prefix##'U', \
letter_V = prefix##'V', \
letter_W = prefix##'W', \
letter_X = prefix##'X', \
letter_Y = prefix##'Y', \
letter_Z = prefix##'Z', \
left_bracket = prefix##'[', \
back_slash = prefix##'\\', \
right_bracket = prefix##']', \
caret = prefix##'^', \
underscore = prefix##'_', \
interpunct = prefix##'`', \
letter_a = prefix##'a', \
letter_b = prefix##'b', \
letter_c = prefix##'c', \
letter_d = prefix##'d', \
letter_e = prefix##'e', \
letter_f = prefix##'f', \
letter_g = prefix##'g', \
letter_h = prefix##'h', \
letter_i = prefix##'i', \
letter_j = prefix##'j', \
letter_k = prefix##'k', \
letter_l = prefix##'l', \
letter_m = prefix##'m', \
letter_n = prefix##'n', \
letter_o = prefix##'o', \
letter_p = prefix##'p', \
letter_q = prefix##'q', \
letter_r = prefix##'r', \
letter_s = prefix##'s', \
letter_t = prefix##'t', \
letter_u = prefix##'u', \
letter_v = prefix##'v', \
letter_w = prefix##'w', \
letter_x = prefix##'x', \
letter_y = prefix##'y', \
letter_z = prefix##'z', \
left_brace = prefix##'{', \
vertical_bar = prefix##'|', \
right_brace = prefix##'}', \
tilde = prefix##'~'; \
/* 127 DEL(delete) */
template<typename T>
class CAsciiCharacters
{};
template<>
class CAsciiCharacters<char>
{
public:
__M_BASE_ASCII_Definition( char, (char) )
};
template<>
class CAsciiCharacters<wchar_t>
{
public:
__M_BASE_ASCII_Definition( wchar_t, L )
};