diff options
author | scuri <scuri> | 2009-10-20 18:12:26 +0000 |
---|---|---|
committer | scuri <scuri> | 2009-10-20 18:12:26 +0000 |
commit | a972dbb9bd731a439d009bd51e36981c41a06232 (patch) | |
tree | e4e5d0aaf23706083dfb1fe4180e18f0907a90c9 /src/pdflib/pdcore/pc_ctype.h | |
parent | 27a4f9c4ac45ff65f941964f7351b64b1e6a9f35 (diff) |
*** empty log message ***
Diffstat (limited to 'src/pdflib/pdcore/pc_ctype.h')
-rw-r--r-- | src/pdflib/pdcore/pc_ctype.h | 149 |
1 files changed, 98 insertions, 51 deletions
diff --git a/src/pdflib/pdcore/pc_ctype.h b/src/pdflib/pdcore/pc_ctype.h index 5aebcb4..59da980 100644 --- a/src/pdflib/pdcore/pc_ctype.h +++ b/src/pdflib/pdcore/pc_ctype.h @@ -6,72 +6,119 @@ | Proprietary source code -- do not redistribute! | *---------------------------------------------------------------------------*/ -/* $Id: pc_ctype.h,v 1.1 2008/10/17 06:10:43 scuri Exp $ */ +/* $Id: pc_ctype.h,v 1.2 2009/10/20 18:12:26 scuri Exp $ */ #ifndef PC_CTYPE_H_INCLUDED #define PC_CTYPE_H_INCLUDED #include "pc_util.h" +extern const unsigned short pdc_ctype[]; + +#define PDC_ISLOWER 0x0001 +#define PDC_ISUPPER 0x0002 +#define PDC_ISDIGIT 0x0004 +#define PDC_ISPUNCT 0x0008 +#define PDC_ISSPACE 0x0010 +#define PDC_ISSPACE2 0x0020 + +#define PDC_ISOCT 0x0100 +#define PDC_ISXDIGIT 0x0200 +#define PDC_ISDELIM 0x0400 +#define PDC_ISNUM0 0x0800 /* '+' '-' '.' '0'..'9' */ +#define PDC_ISPDFSP 0x1000 /* ' ' NUL HT NL CR FF */ + + +#define PDC_CONVCHAR(c) ((pdc_byte) c) + + /* these are the locale-free replacements for the standard library -** isXXX() functions. use the macros below, DO NOT use the pdc__isXXX() -** functions directly. +** isXXX() functions. */ -#define pdc_isalnum(c) pdc__isalnum((pdc_byte) (c)) -#define pdc_isalpha(c) pdc__isalpha((pdc_byte) (c)) -#define pdc_isdigit(c) pdc__isdigit((pdc_byte) (c)) -#define pdc_islower(c) pdc__islower((pdc_byte) (c)) -#define pdc_isprint(c) pdc__isprint((pdc_byte) (c)) -#define pdc_ispunct(c) pdc__ispunct((pdc_byte) (c)) -#define pdc_isspace(c) pdc__isspace((pdc_byte) (c)) -#define pdc_isupper(c) pdc__isupper((pdc_byte) (c)) -#define pdc_isxdigit(c) pdc__isxdigit((pdc_byte) (c)) - -#define pdc_tolower(c) pdc__tolower((pdc_byte) (c)) -#define pdc_toupper(c) pdc__toupper((pdc_byte) (c)) - -pdc_bool pdc__isalnum(pdc_byte c); -pdc_bool pdc__isalpha(pdc_byte c); -pdc_bool pdc__isdigit(pdc_byte c); -pdc_bool pdc__islower(pdc_byte c); -pdc_bool pdc__isprint(pdc_byte c); -pdc_bool pdc__ispunct(pdc_byte c); -pdc_bool pdc__isspace(pdc_byte c); -pdc_bool pdc__isupper(pdc_byte c); -pdc_bool pdc__isxdigit(pdc_byte c); - -pdc_byte pdc__tolower(pdc_byte c); -pdc_byte pdc__toupper(pdc_byte c); +#define pdc_isalnum(c) \ + ((pdc_ctype[PDC_CONVCHAR(c)] & \ + (PDC_ISLOWER | PDC_ISUPPER | PDC_ISDIGIT)) != 0) + +#define pdc_isalpha(c) \ + ((pdc_ctype[PDC_CONVCHAR(c)] & (PDC_ISLOWER | PDC_ISUPPER)) != 0) + +#define pdc_isdigit(c) \ + ((pdc_ctype[PDC_CONVCHAR(c)] & PDC_ISDIGIT) != 0) + +#define pdc_islower(c) \ + ((pdc_ctype[PDC_CONVCHAR(c)] & PDC_ISLOWER) != 0) + +#define pdc_isprint(c) \ + ((pdc_ctype[PDC_CONVCHAR(c)] & \ + (PDC_ISLOWER | PDC_ISUPPER | \ + PDC_ISDIGIT | PDC_ISPUNCT | PDC_ISSPACE2)) != 0) + +#define pdc_ispunct(c) \ + ((pdc_ctype[PDC_CONVCHAR(c)] & PDC_ISPUNCT) != 0) + +#define pdc_isspace(c) \ + ((pdc_ctype[PDC_CONVCHAR(c)] & PDC_ISSPACE) != 0) + +#define pdc_isupper(c) \ + ((pdc_ctype[PDC_CONVCHAR(c)] & PDC_ISUPPER) != 0) + +#define pdc_isxdigit(c) \ + ((pdc_ctype[PDC_CONVCHAR(c)] & PDC_ISXDIGIT) != 0) + + +#define pdc_tolower(c) \ + (pdc_isupper(c) ? ((pdc_byte) ((c) + 0x20)) : (pdc_byte) (c)) + + +#define pdc_toupper(c) \ + (pdc_islower(c) ? ((pdc_byte) ((c) - 0x20)) : (pdc_byte) (c)) /* these macros are for the various flavors of the token scanner. they ** expect ASCII input even on EBCDIC platforms (thus the "_a" suffix), ** and they implement special rules for PDF character classification. */ -#define pdc_isalpha_a(c) pdc__isalpha_a((pdc_byte) (c)) -#define pdc_isdecdt_a(c) pdc__isdecdt_a((pdc_byte) (c)) -#define pdc_isdelim_a(c) pdc__isdelim_a((pdc_byte) (c)) -#define pdc_ishexdt_a(c) pdc__ishexdt_a((pdc_byte) (c)) -#define pdc_islower_a(c) pdc__islower_a((pdc_byte) (c)) -#define pdc_isnum0_a(c) pdc__isnum0_a((pdc_byte) (c)) -#define pdc_isoctdt_a(c) pdc__isoctdt_a((pdc_byte) (c)) +#define pdc_isalnum_a(c) \ + ((pdc_ctype[(pdc_byte) (c)] & \ + (PDC_ISLOWER | PDC_ISUPPER | PDC_ISDIGIT)) != 0) + +#define pdc_isalpha_a(c) \ + ((pdc_ctype[(pdc_byte) (c)] & (PDC_ISLOWER | PDC_ISUPPER)) != 0) + +#define pdc_isdecdt_a(c) \ + ((pdc_ctype[(pdc_byte) (c)] & PDC_ISDIGIT) != 0) + +#define pdc_isdelim_a(c) \ + ((pdc_ctype[(pdc_byte) (c)] & PDC_ISDELIM) != 0) + +#define pdc_ishexdt_a(c) \ + ((pdc_ctype[(pdc_byte) (c)] & PDC_ISXDIGIT) != 0) + +#define pdc_islower_a(c) \ + ((pdc_ctype[(pdc_byte) (c)] & PDC_ISLOWER) != 0) + +#define pdc_isnum0_a(c) \ + ((pdc_ctype[(pdc_byte) (c)] & PDC_ISNUM0) != 0) + +#define pdc_isoctdt_a(c) \ + ((pdc_ctype[(pdc_byte) (c)] & PDC_ISOCT) != 0) + +#define pdc_isspace_a(c) \ + ((pdc_ctype[(pdc_byte) (c)] & PDC_ISPDFSP) != 0) + +#define pdc_isspecial_a(c) \ + ((pdc_ctype[(pdc_byte) (c)] & (PDC_ISPDFSP | PDC_ISDELIM)) != 0) + +#define pdc_isupper_a(c) \ + ((pdc_ctype[(pdc_byte) (c)] & PDC_ISUPPER) != 0) #define pdc_isregular_a(c) \ - ((c) != -1 && !pdc__isspecial_a((pdc_byte) (c))) - -#define pdc_isspace_a(c) pdc__isspace_a((pdc_byte) (c)) -#define pdc_isspecial_a(c) pdc__isspecial_a((pdc_byte) (c)) -#define pdc_isupper_a(c) pdc__isupper_a((pdc_byte) (c)) - -pdc_bool pdc__isalpha_a(pdc_byte c); -pdc_bool pdc__isdecdt_a(pdc_byte c); -pdc_bool pdc__isdelim_a(pdc_byte c); -pdc_bool pdc__ishexdt_a(pdc_byte c); -pdc_bool pdc__islower_a(pdc_byte c); -pdc_bool pdc__isnum0_a(pdc_byte c); -pdc_bool pdc__isoctdt_a(pdc_byte c); -pdc_bool pdc__isspace_a(pdc_byte c); -pdc_bool pdc__isspecial_a(pdc_byte c); -pdc_bool pdc__isupper_a(pdc_byte c); + ((c) != -1 && !pdc_isspecial_a((pdc_byte) (c))) + +#define pdc_tolower_a(c) \ + (pdc_isupper_a(c) ? ((pdc_byte) ((c) + 0x20)) : (pdc_byte) (c)) + +#define pdc_toupper_a(c) \ + (pdc_islower_a(c) ? ((pdc_byte) ((c) - 0x20)) : (pdc_byte) (c)) #endif /* PC_CTYPE_H_INCLUDED */ |