blob: bf1947686c957b74e9782e18f0ec555deae812d3 [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
#include "DFCharacterSet.h"
#include "DFCommon.h"
int DFCharIsHex(uint32_t ch)
{
return (((ch >= '0') && (ch <= '9')) ||
((ch >= 'a') && (ch <= 'f')) ||
((ch >= 'A') && (ch <= 'F')));
}
int DFCharIsWhitespace(uint32_t ch)
{
switch (ch) {
case 0x9:
case 0x20:
case 0xA0:
case 0x1680:
case 0x2000:
case 0x2001:
case 0x2002:
case 0x2003:
case 0x2004:
case 0x2005:
case 0x2006:
case 0x2007:
case 0x2008:
case 0x2009:
case 0x200A:
case 0x200B:
case 0x202F:
case 0x205F:
case 0x3000:
return 1;
default:
return 0;
}
}
int DFCharIsNewline(uint32_t ch)
{
switch (ch) {
case 0xA:
case 0xB:
case 0xC:
case 0xD:
case 0x85:
case 0x2028:
case 0x2029:
return 1;
default:
return 0;
}
}
int DFCharIsWhitespaceOrNewline(uint32_t ch)
{
switch (ch) {
case 0x9:
case 0xA:
case 0xB:
case 0xC:
case 0xD:
case 0x20:
case 0x85:
case 0xA0:
case 0x1680:
case 0x2000:
case 0x2001:
case 0x2002:
case 0x2003:
case 0x2004:
case 0x2005:
case 0x2006:
case 0x2007:
case 0x2008:
case 0x2009:
case 0x200A:
case 0x200B:
case 0x2028:
case 0x2029:
case 0x202F:
case 0x205F:
case 0x3000:
return 1;
default:
return 0;
}
}
int DFCharIsPunctuation(uint32_t ch)
{
switch (ch) {
case 0x21:
case 0x22:
case 0x23:
case 0x25:
case 0x26:
case 0x27:
case 0x28:
case 0x29:
case 0x2A:
case 0x2C:
case 0x2D:
case 0x2E:
case 0x2F:
case 0x3A:
case 0x3B:
case 0x3F:
case 0x40:
case 0x5B:
case 0x5C:
case 0x5D:
case 0x5F:
case 0x7B:
case 0x7D:
case 0xA1:
case 0xA7:
case 0xAB:
case 0xB6:
case 0xB7:
case 0xBB:
case 0xBF:
case 0x37E:
case 0x387:
case 0x55A:
case 0x55B:
case 0x55C:
case 0x55D:
case 0x55E:
case 0x55F:
case 0x589:
case 0x58A:
case 0x5BE:
case 0x5C0:
case 0x5C3:
case 0x5C6:
case 0x5F3:
case 0x5F4:
case 0x609:
case 0x60A:
case 0x60C:
case 0x60D:
case 0x61B:
case 0x61E:
case 0x61F:
case 0x66A:
case 0x66B:
case 0x66C:
case 0x66D:
case 0x6D4:
case 0x700:
case 0x701:
case 0x702:
case 0x703:
case 0x704:
case 0x705:
case 0x706:
case 0x707:
case 0x708:
case 0x709:
case 0x70A:
case 0x70B:
case 0x70C:
case 0x70D:
case 0x7F7:
case 0x7F8:
case 0x7F9:
case 0x830:
case 0x831:
case 0x832:
case 0x833:
case 0x834:
case 0x835:
case 0x836:
case 0x837:
case 0x838:
case 0x839:
case 0x83A:
case 0x83B:
case 0x83C:
case 0x83D:
case 0x83E:
case 0x85E:
case 0x964:
case 0x965:
case 0x970:
case 0xAF0:
case 0xDF4:
case 0xE4F:
case 0xE5A:
case 0xE5B:
case 0xF04:
case 0xF05:
case 0xF06:
case 0xF07:
case 0xF08:
case 0xF09:
case 0xF0A:
case 0xF0B:
case 0xF0C:
case 0xF0D:
case 0xF0E:
case 0xF0F:
case 0xF10:
case 0xF11:
case 0xF12:
case 0xF14:
case 0xF3A:
case 0xF3B:
case 0xF3C:
case 0xF3D:
case 0xF85:
case 0xFD0:
case 0xFD1:
case 0xFD2:
case 0xFD3:
case 0xFD4:
case 0xFD9:
case 0xFDA:
case 0x104A:
case 0x104B:
case 0x104C:
case 0x104D:
case 0x104E:
case 0x104F:
case 0x10FB:
case 0x1360:
case 0x1361:
case 0x1362:
case 0x1363:
case 0x1364:
case 0x1365:
case 0x1366:
case 0x1367:
case 0x1368:
case 0x1400:
case 0x166D:
case 0x166E:
case 0x169B:
case 0x169C:
case 0x16EB:
case 0x16EC:
case 0x16ED:
case 0x1735:
case 0x1736:
case 0x17D4:
case 0x17D5:
case 0x17D6:
case 0x17D8:
case 0x17D9:
case 0x17DA:
case 0x1800:
case 0x1801:
case 0x1802:
case 0x1803:
case 0x1804:
case 0x1805:
case 0x1806:
case 0x1807:
case 0x1808:
case 0x1809:
case 0x180A:
case 0x1944:
case 0x1945:
case 0x1A1E:
case 0x1A1F:
case 0x1AA0:
case 0x1AA1:
case 0x1AA2:
case 0x1AA3:
case 0x1AA4:
case 0x1AA5:
case 0x1AA6:
case 0x1AA8:
case 0x1AA9:
case 0x1AAA:
case 0x1AAB:
case 0x1AAC:
case 0x1AAD:
case 0x1B5A:
case 0x1B5B:
case 0x1B5C:
case 0x1B5D:
case 0x1B5E:
case 0x1B5F:
case 0x1B60:
case 0x1BFC:
case 0x1BFD:
case 0x1BFE:
case 0x1BFF:
case 0x1C3B:
case 0x1C3C:
case 0x1C3D:
case 0x1C3E:
case 0x1C3F:
case 0x1C7E:
case 0x1C7F:
case 0x1CC0:
case 0x1CC1:
case 0x1CC2:
case 0x1CC3:
case 0x1CC4:
case 0x1CC5:
case 0x1CC6:
case 0x1CC7:
case 0x1CD3:
case 0x2010:
case 0x2011:
case 0x2012:
case 0x2013:
case 0x2014:
case 0x2015:
case 0x2016:
case 0x2017:
case 0x2018:
case 0x2019:
case 0x201A:
case 0x201B:
case 0x201C:
case 0x201D:
case 0x201E:
case 0x201F:
case 0x2020:
case 0x2021:
case 0x2022:
case 0x2023:
case 0x2024:
case 0x2025:
case 0x2026:
case 0x2027:
case 0x2030:
case 0x2031:
case 0x2032:
case 0x2033:
case 0x2034:
case 0x2035:
case 0x2036:
case 0x2037:
case 0x2038:
case 0x2039:
case 0x203A:
case 0x203B:
case 0x203C:
case 0x203D:
case 0x203E:
case 0x203F:
case 0x2040:
case 0x2041:
case 0x2042:
case 0x2043:
case 0x2045:
case 0x2046:
case 0x2047:
case 0x2048:
case 0x2049:
case 0x204A:
case 0x204B:
case 0x204C:
case 0x204D:
case 0x204E:
case 0x204F:
case 0x2050:
case 0x2051:
case 0x2053:
case 0x2054:
case 0x2055:
case 0x2056:
case 0x2057:
case 0x2058:
case 0x2059:
case 0x205A:
case 0x205B:
case 0x205C:
case 0x205D:
case 0x205E:
case 0x207D:
case 0x207E:
case 0x208D:
case 0x208E:
case 0x2329:
case 0x232A:
case 0x2768:
case 0x2769:
case 0x276A:
case 0x276B:
case 0x276C:
case 0x276D:
case 0x276E:
case 0x276F:
case 0x2770:
case 0x2771:
case 0x2772:
case 0x2773:
case 0x2774:
case 0x2775:
case 0x27C5:
case 0x27C6:
case 0x27E6:
case 0x27E7:
case 0x27E8:
case 0x27E9:
case 0x27EA:
case 0x27EB:
case 0x27EC:
case 0x27ED:
case 0x27EE:
case 0x27EF:
case 0x2983:
case 0x2984:
case 0x2985:
case 0x2986:
case 0x2987:
case 0x2988:
case 0x2989:
case 0x298A:
case 0x298B:
case 0x298C:
case 0x298D:
case 0x298E:
case 0x298F:
case 0x2990:
case 0x2991:
case 0x2992:
case 0x2993:
case 0x2994:
case 0x2995:
case 0x2996:
case 0x2997:
case 0x2998:
case 0x29D8:
case 0x29D9:
case 0x29DA:
case 0x29DB:
case 0x29FC:
case 0x29FD:
case 0x2CF9:
case 0x2CFA:
case 0x2CFB:
case 0x2CFC:
case 0x2CFE:
case 0x2CFF:
case 0x2D70:
case 0x2E00:
case 0x2E01:
case 0x2E02:
case 0x2E03:
case 0x2E04:
case 0x2E05:
case 0x2E06:
case 0x2E07:
case 0x2E08:
case 0x2E09:
case 0x2E0A:
case 0x2E0B:
case 0x2E0C:
case 0x2E0D:
case 0x2E0E:
case 0x2E0F:
case 0x2E10:
case 0x2E11:
case 0x2E12:
case 0x2E13:
case 0x2E14:
case 0x2E15:
case 0x2E16:
case 0x2E17:
case 0x2E18:
case 0x2E19:
case 0x2E1A:
case 0x2E1B:
case 0x2E1C:
case 0x2E1D:
case 0x2E1E:
case 0x2E1F:
case 0x2E20:
case 0x2E21:
case 0x2E22:
case 0x2E23:
case 0x2E24:
case 0x2E25:
case 0x2E26:
case 0x2E27:
case 0x2E28:
case 0x2E29:
case 0x2E2A:
case 0x2E2B:
case 0x2E2C:
case 0x2E2D:
case 0x2E2E:
case 0x2E30:
case 0x2E31:
case 0x2E32:
case 0x2E33:
case 0x2E34:
case 0x2E35:
case 0x2E36:
case 0x2E37:
case 0x2E38:
case 0x2E39:
case 0x2E3A:
case 0x2E3B:
case 0x3001:
case 0x3002:
case 0x3003:
case 0x3008:
case 0x3009:
case 0x300A:
case 0x300B:
case 0x300C:
case 0x300D:
case 0x300E:
case 0x300F:
case 0x3010:
case 0x3011:
case 0x3014:
case 0x3015:
case 0x3016:
case 0x3017:
case 0x3018:
case 0x3019:
case 0x301A:
case 0x301B:
case 0x301C:
case 0x301D:
case 0x301E:
case 0x301F:
case 0x3030:
case 0x303D:
case 0x30A0:
case 0x30FB:
case 0xA4FE:
case 0xA4FF:
case 0xA60D:
case 0xA60E:
case 0xA60F:
case 0xA673:
case 0xA67E:
case 0xA6F2:
case 0xA6F3:
case 0xA6F4:
case 0xA6F5:
case 0xA6F6:
case 0xA6F7:
case 0xA874:
case 0xA875:
case 0xA876:
case 0xA877:
case 0xA8CE:
case 0xA8CF:
case 0xA8F8:
case 0xA8F9:
case 0xA8FA:
case 0xA92E:
case 0xA92F:
case 0xA95F:
case 0xA9C1:
case 0xA9C2:
case 0xA9C3:
case 0xA9C4:
case 0xA9C5:
case 0xA9C6:
case 0xA9C7:
case 0xA9C8:
case 0xA9C9:
case 0xA9CA:
case 0xA9CB:
case 0xA9CC:
case 0xA9CD:
case 0xA9DE:
case 0xA9DF:
case 0xAA5C:
case 0xAA5D:
case 0xAA5E:
case 0xAA5F:
case 0xAADE:
case 0xAADF:
case 0xAAF0:
case 0xAAF1:
case 0xABEB:
case 0xFD3E:
case 0xFD3F:
case 0xFE10:
case 0xFE11:
case 0xFE12:
case 0xFE13:
case 0xFE14:
case 0xFE15:
case 0xFE16:
case 0xFE17:
case 0xFE18:
case 0xFE19:
case 0xFE30:
case 0xFE31:
case 0xFE32:
case 0xFE33:
case 0xFE34:
case 0xFE35:
case 0xFE36:
case 0xFE37:
case 0xFE38:
case 0xFE39:
case 0xFE3A:
case 0xFE3B:
case 0xFE3C:
case 0xFE3D:
case 0xFE3E:
case 0xFE3F:
case 0xFE40:
case 0xFE41:
case 0xFE42:
case 0xFE43:
case 0xFE44:
case 0xFE45:
case 0xFE46:
case 0xFE47:
case 0xFE48:
case 0xFE49:
case 0xFE4A:
case 0xFE4B:
case 0xFE4C:
case 0xFE4D:
case 0xFE4E:
case 0xFE4F:
case 0xFE50:
case 0xFE51:
case 0xFE52:
case 0xFE54:
case 0xFE55:
case 0xFE56:
case 0xFE57:
case 0xFE58:
case 0xFE59:
case 0xFE5A:
case 0xFE5B:
case 0xFE5C:
case 0xFE5D:
case 0xFE5E:
case 0xFE5F:
case 0xFE60:
case 0xFE61:
case 0xFE63:
case 0xFE68:
case 0xFE6A:
case 0xFE6B:
case 0xFF01:
case 0xFF02:
case 0xFF03:
case 0xFF05:
case 0xFF06:
case 0xFF07:
case 0xFF08:
case 0xFF09:
case 0xFF0A:
case 0xFF0C:
case 0xFF0D:
case 0xFF0E:
case 0xFF0F:
case 0xFF1A:
case 0xFF1B:
case 0xFF1F:
case 0xFF20:
case 0xFF3B:
case 0xFF3C:
case 0xFF3D:
case 0xFF3F:
case 0xFF5B:
case 0xFF5D:
case 0xFF5F:
case 0xFF60:
case 0xFF61:
case 0xFF62:
case 0xFF63:
case 0xFF64:
case 0xFF65:
return 1;
default:
return 0;
}
}