| /* | |
| * chvalid.c: this module implements the character range | |
| * validation APIs | |
| */ | |
| /* | |
| * The initial tables ({func_name}_tab) are used to validate whether a | |
| * single-byte character is within the specified group. Each table | |
| * contains 256 bytes, with each byte representing one of the 256 | |
| * possible characters. If the table byte is set, the character is | |
| * allowed. | |
| * | |
| */ | |
| /** | |
| * Does a binary search of the range table to determine if char | |
| * is valid | |
| * | |
| * @param val character to be validated | |
| * @param rptr pointer to range to be used to validate | |
| * @returns true if character valid, false otherwise | |
| */ | |
| int | |
| xmlCharInRange (unsigned int val, const xmlChRangeGroup *rptr) { | |
| int low, high, mid; | |
| const xmlChSRange *sptr; | |
| const xmlChLRange *lptr; | |
| if (rptr == NULL) return(0); | |
| if (val < 0x10000) { /* is val in 'short' or 'long' array? */ | |
| if (rptr->nbShortRange == 0) | |
| return 0; | |
| low = 0; | |
| high = rptr->nbShortRange - 1; | |
| sptr = rptr->shortRange; | |
| while (low <= high) { | |
| mid = (low + high) / 2; | |
| if ((unsigned short) val < sptr[mid].low) { | |
| high = mid - 1; | |
| } else { | |
| if ((unsigned short) val > sptr[mid].high) { | |
| low = mid + 1; | |
| } else { | |
| return 1; | |
| } | |
| } | |
| } | |
| } else { | |
| if (rptr->nbLongRange == 0) { | |
| return 0; | |
| } | |
| low = 0; | |
| high = rptr->nbLongRange - 1; | |
| lptr = rptr->longRange; | |
| while (low <= high) { | |
| mid = (low + high) / 2; | |
| if (val < lptr[mid].low) { | |
| high = mid - 1; | |
| } else { | |
| if (val > lptr[mid].high) { | |
| low = mid + 1; | |
| } else { | |
| return 1; | |
| } | |
| } | |
| } | |
| } | |
| return 0; | |
| } | |
| /** | |
| * @deprecated Use #xmlIsBaseChar_ch or #xmlIsBaseCharQ. | |
| * | |
| * @param ch character to validate | |
| * @returns true if argument valid, false otherwise | |
| */ | |
| int | |
| xmlIsBaseChar(unsigned int ch) { | |
| return(xmlIsBaseCharQ(ch)); | |
| } | |
| /** | |
| * @deprecated Use #xmlIsBlank_ch or #xmlIsBlankQ. | |
| * | |
| * @param ch character to validate | |
| * @returns true if argument valid, false otherwise | |
| */ | |
| int | |
| xmlIsBlank(unsigned int ch) { | |
| return(xmlIsBlankQ(ch)); | |
| } | |
| /** | |
| * @deprecated Use #xmlIsChar_ch or #xmlIsCharQ. | |
| * | |
| * @param ch character to validate | |
| * @returns true if argument valid, false otherwise | |
| */ | |
| int | |
| xmlIsChar(unsigned int ch) { | |
| return(xmlIsCharQ(ch)); | |
| } | |
| /** | |
| * @deprecated Use #xmlIsCombiningQ. | |
| * | |
| * @param ch character to validate | |
| * @returns true if argument valid, false otherwise | |
| */ | |
| int | |
| xmlIsCombining(unsigned int ch) { | |
| return(xmlIsCombiningQ(ch)); | |
| } | |
| /** | |
| * @deprecated Use #xmlIsDigit_ch or #xmlIsDigitQ. | |
| * | |
| * @param ch character to validate | |
| * @returns true if argument valid, false otherwise | |
| */ | |
| int | |
| xmlIsDigit(unsigned int ch) { | |
| return(xmlIsDigitQ(ch)); | |
| } | |
| /** | |
| * @deprecated Use #xmlIsExtender_ch or #xmlIsExtenderQ. | |
| * | |
| * @param ch character to validate | |
| * @returns true if argument valid, false otherwise | |
| */ | |
| int | |
| xmlIsExtender(unsigned int ch) { | |
| return(xmlIsExtenderQ(ch)); | |
| } | |
| /** | |
| * @deprecated Use #xmlIsIdeographicQ. | |
| * | |
| * @param ch character to validate | |
| * @returns true if argument valid, false otherwise | |
| */ | |
| int | |
| xmlIsIdeographic(unsigned int ch) { | |
| return(xmlIsIdeographicQ(ch)); | |
| } | |
| /** | |
| * @deprecated Use #xmlIsPubidChar_ch or #xmlIsPubidCharQ. | |
| * | |
| * @param ch character to validate | |
| * @returns true if argument valid, false otherwise | |
| */ | |
| int | |
| xmlIsPubidChar(unsigned int ch) { | |
| return(xmlIsPubidCharQ(ch)); | |
| } | |