inlib
1.2.0
|
00001 // Copyright (C) 2010, Guy Barrand. All rights reserved. 00002 // See the file inlib.license for terms. 00003 00004 #ifndef inlib_charmanip 00005 #define inlib_charmanip 00006 00007 namespace inlib { 00008 00009 // some char ASCII code : 00010 // \0 : 0 00011 // \n = LF : 10 00012 // \r = CR : 13 00013 // \t = HT : 9 00014 // , : 44 00015 00016 inline bool is_upper(char a_char) { 00017 // do it myself: due to problem with ctype.h and 00018 // isxxx macros on different platforms. 00019 switch(a_char) { 00020 case 'A':return true; 00021 case 'B':return true; 00022 case 'C':return true; 00023 case 'D':return true; 00024 case 'E':return true; 00025 case 'F':return true; 00026 case 'G':return true; 00027 case 'H':return true; 00028 case 'I':return true; 00029 case 'J':return true; 00030 case 'K':return true; 00031 case 'L':return true; 00032 case 'M':return true; 00033 case 'N':return true; 00034 case 'O':return true; 00035 case 'P':return true; 00036 case 'Q':return true; 00037 case 'R':return true; 00038 case 'S':return true; 00039 case 'T':return true; 00040 case 'U':return true; 00041 case 'V':return true; 00042 case 'W':return true; 00043 case 'X':return true; 00044 case 'Y':return true; 00045 case 'Z':return true; 00046 default:return false; 00047 } 00048 return false; 00049 } 00050 00051 inline bool is_lower(char a_char) { 00052 switch(a_char) { 00053 case 'a':return true; 00054 case 'b':return true; 00055 case 'c':return true; 00056 case 'd':return true; 00057 case 'e':return true; 00058 case 'f':return true; 00059 case 'g':return true; 00060 case 'h':return true; 00061 case 'i':return true; 00062 case 'j':return true; 00063 case 'k':return true; 00064 case 'l':return true; 00065 case 'm':return true; 00066 case 'n':return true; 00067 case 'o':return true; 00068 case 'p':return true; 00069 case 'q':return true; 00070 case 'r':return true; 00071 case 's':return true; 00072 case 't':return true; 00073 case 'u':return true; 00074 case 'v':return true; 00075 case 'w':return true; 00076 case 'x':return true; 00077 case 'y':return true; 00078 case 'z':return true; 00079 default:return false; 00080 } 00081 return false; 00082 } 00083 00084 inline bool is_digit(char a_char) { 00085 switch(a_char){ 00086 case '0':return true; 00087 case '1':return true; 00088 case '2':return true; 00089 case '3':return true; 00090 case '4':return true; 00091 case '5':return true; 00092 case '6':return true; 00093 case '7':return true; 00094 case '8':return true; 00095 case '9':return true; 00096 default:return false; 00097 } 00098 return false; 00099 } 00100 00101 inline bool is_letter(char a_char) { 00102 return (is_lower(a_char)||is_upper(a_char)) ? true : false; 00103 } 00104 00105 //inline bool is_alpha(char a_char) { 00106 // return (is_lower(a_char)||is_upper(a_char)||is_digit(a_char)) ? true : false; 00107 //} 00108 00109 inline bool is_printable(char a_char) { 00110 if(is_lower(a_char)||is_upper(a_char)||is_digit(a_char)) return true; 00111 switch(a_char) { 00112 case ' ':return true; 00113 case '!':return true; 00114 case '"':return true; 00115 case '#':return true; 00116 case '$':return true; 00117 case '%':return true; 00118 case '&':return true; 00119 case '\'':return true; 00120 case '(':return true; 00121 case ')':return true; 00122 case '*':return true; 00123 case '+':return true; 00124 case ',':return true; 00125 case '-':return true; 00126 case '.':return true; 00127 case '/':return true; 00128 case ':':return true; 00129 case ';':return true; 00130 case '<':return true; 00131 case '=':return true; 00132 case '>':return true; 00133 case '?':return true; 00134 case '@':return true; 00135 case '[':return true; 00136 case '\\':return true; 00137 case ']':return true; 00138 case '^':return true; 00139 case '_':return true; 00140 case '`':return true; 00141 case '{':return true; 00142 case '|':return true; 00143 case '}':return true; 00144 case '~':return true; 00145 default:return false; 00146 } 00147 return false; 00148 } 00149 00150 } 00151 00152 #endif