(file) Return to naming.c CVS log (file) (dir) Up to [OMI] / omi / base

  1 mike  1.1 /*
  2           **==============================================================================
  3           **
  4           ** Open Management Infrastructure (OMI)
  5           **
  6           ** Copyright (c) Microsoft Corporation
  7           ** 
  8           ** Licensed under the Apache License, Version 2.0 (the "License"); you may not 
  9           ** use this file except in compliance with the License. You may obtain a copy 
 10           ** of the License at 
 11           **
 12           **     http://www.apache.org/licenses/LICENSE-2.0 
 13           **
 14           ** THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 15           ** KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED 
 16           ** WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, 
 17           ** MERCHANTABLITY OR NON-INFRINGEMENT. 
 18           **
 19           ** See the Apache 2 License for the specific language governing permissions 
 20           ** and limitations under the License.
 21           **
 22 mike  1.1 **==============================================================================
 23           */
 24           
 25           #include "naming.h"
 26           
 27 krisbash 1.3 MI_Boolean LegalName(const ZChar* name)
 28 mike     1.1 {
 29                  /* Table for determining whether character is [A-Za-z_] */
 30                  static const MI_Uint8 _FirstChar[256] =
 31                  {
 32                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 33                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 34                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 35                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 36                      0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
 37                      1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,
 38                      0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
 39                      1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,
 40                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 41                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 42                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 43                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 44                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 45                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 46                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 47                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 48                  };
 49 mike     1.1     /* Table for determining whether character is [A-Za-z0-9_] */
 50                  static const MI_Uint8 _InnerChar[256] =
 51                  {
 52                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 53                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 54                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 55                      1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,
 56                      0,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,0,0,0,0,1,
 58                      0,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,0,0,0,0,0,
 60                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 61                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 62                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 63                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 64                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 65                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 66                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 67                      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 68                  };
 69 krisbash 1.3     const ZChar* p = name;
 70 mike     1.1 
 71                  /* Check the 1st character */
 72                  if (!_FirstChar[(MI_Uint8)*p])
 73                      return MI_FALSE;
 74              
 75              # if (MI_CHAR_TYPE == 2)
 76                  if (*p >= 128)
 77                      return MI_FALSE;
 78              # endif
 79              
 80                  p++;
 81              
 82                  /* Check subsequent characters */
 83                  while (_InnerChar[(MI_Uint8)*p])
 84                  {
 85              # if (MI_CHAR_TYPE == 2)
 86                  if (*p >= 128)
 87                      return MI_FALSE;
 88              # endif
 89                      p++;
 90                  }
 91 mike     1.1 
 92                  return *p == '\0' ? MI_TRUE : MI_FALSE;
 93              }
 94              
 95              const MI_Uint8 __omi_ToLowerTable[256] =
 96              {
 97                  0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
 98                  0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
 99                  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
100                  0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
101                  0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
102                  0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
103                  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
104                  0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
105                  0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
106                  0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
107                  0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
108                  0x78, 0x79, 0x7A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
109                  0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
110                  0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
111                  0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
112 mike     1.1     0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F,
113                  0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
114                  0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F,
115                  0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
116                  0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F,
117                  0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7,
118                  0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF,
119                  0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7,
120                  0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
121                  0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
122                  0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
123                  0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
124                  0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
125                  0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
126                  0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
127                  0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
128                  0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF,
129              };

ViewCVS 0.9.2