Geant4 Cross Reference |
1 // Copyright (C) 2010, Guy Barrand. All rights reserved. 2 // See the file tools.license for terms. 3 4 #ifndef tools_charmanip 5 #define tools_charmanip 6 7 namespace tools { 8 9 // some char ASCII code : 10 // \0 : 0 11 // \n = LF : 10 12 // \r = CR : 13 13 // \t = HT : 9 14 // , : 44 15 16 inline bool is_upper(char a_char) { 17 // do it myself: due to problem with ctype.h and 18 // isxxx macros on different platforms. 19 switch(a_char) { 20 case 'A':return true; 21 case 'B':return true; 22 case 'C':return true; 23 case 'D':return true; 24 case 'E':return true; 25 case 'F':return true; 26 case 'G':return true; 27 case 'H':return true; 28 case 'I':return true; 29 case 'J':return true; 30 case 'K':return true; 31 case 'L':return true; 32 case 'M':return true; 33 case 'N':return true; 34 case 'O':return true; 35 case 'P':return true; 36 case 'Q':return true; 37 case 'R':return true; 38 case 'S':return true; 39 case 'T':return true; 40 case 'U':return true; 41 case 'V':return true; 42 case 'W':return true; 43 case 'X':return true; 44 case 'Y':return true; 45 case 'Z':return true; 46 default:return false; 47 } 48 return false; 49 } 50 51 inline bool is_lower(char a_char) { 52 switch(a_char) { 53 case 'a':return true; 54 case 'b':return true; 55 case 'c':return true; 56 case 'd':return true; 57 case 'e':return true; 58 case 'f':return true; 59 case 'g':return true; 60 case 'h':return true; 61 case 'i':return true; 62 case 'j':return true; 63 case 'k':return true; 64 case 'l':return true; 65 case 'm':return true; 66 case 'n':return true; 67 case 'o':return true; 68 case 'p':return true; 69 case 'q':return true; 70 case 'r':return true; 71 case 's':return true; 72 case 't':return true; 73 case 'u':return true; 74 case 'v':return true; 75 case 'w':return true; 76 case 'x':return true; 77 case 'y':return true; 78 case 'z':return true; 79 default:return false; 80 } 81 return false; 82 } 83 84 inline bool is_digit(char a_char) { 85 switch(a_char){ 86 case '0':return true; 87 case '1':return true; 88 case '2':return true; 89 case '3':return true; 90 case '4':return true; 91 case '5':return true; 92 case '6':return true; 93 case '7':return true; 94 case '8':return true; 95 case '9':return true; 96 default:return false; 97 } 98 return false; 99 } 100 101 inline bool is_letter(char a_char) { 102 return (is_lower(a_char)||is_upper(a_char)) ? true : false; 103 } 104 105 //inline bool is_alpha(char a_char) { 106 // return (is_lower(a_char)||is_upper(a_char)||is_digit(a_char)) ? true : false; 107 //} 108 109 inline bool is_printable(char a_char) { 110 if(is_lower(a_char)||is_upper(a_char)||is_digit(a_char)) return true; 111 switch(a_char) { 112 case ' ':return true; 113 case '!':return true; 114 case '"':return true; 115 case '#':return true; 116 case '$':return true; 117 case '%':return true; 118 case '&':return true; 119 case '\'':return true; 120 case '(':return true; 121 case ')':return true; 122 case '*':return true; 123 case '+':return true; 124 case ',':return true; 125 case '-':return true; 126 case '.':return true; 127 case '/':return true; 128 case ':':return true; 129 case ';':return true; 130 case '<':return true; 131 case '=':return true; 132 case '>':return true; 133 case '?':return true; 134 case '@':return true; 135 case '[':return true; 136 case '\\':return true; 137 case ']':return true; 138 case '^':return true; 139 case '_':return true; 140 case '`':return true; 141 case '{':return true; 142 case '|':return true; 143 case '}':return true; 144 case '~':return true; 145 default:return false; 146 } 147 return false; 148 } 149 150 } 151 152 #endif