ctype.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /*
  2. * Copyright (c) mlibc & plct lab
  3. *
  4. * SPDX-License-Identifier: MIT
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2023/06/16 bernard the first verison
  9. */
  10. #ifndef MLIBC_CTYPE_H__
  11. #define MLIBC_CTYPE_H__
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15. static inline int isupper(int a)
  16. {
  17. return (int)(((unsigned)(a)-(unsigned)'A') < 26U);
  18. }
  19. static inline int isalpha(int c)
  20. {
  21. return (int)((((unsigned)c|32u)-(unsigned)'a') < 26U);
  22. }
  23. static inline int isspace(int c)
  24. {
  25. return (int)(c == (int)' ' || ((unsigned)c-(unsigned)'\t') < 5U);
  26. }
  27. static inline int isgraph(int c)
  28. {
  29. return (int)((((unsigned)c) > ' ') && (((unsigned)c) <= (unsigned)'~'));
  30. }
  31. static inline int isprint(int c)
  32. {
  33. return (int)((((unsigned)c) >= ' ') && (((unsigned)c) <= (unsigned)'~'));
  34. }
  35. static inline int isdigit(int a)
  36. {
  37. return (int)(((unsigned)(a)-(unsigned)'0') < 10U);
  38. }
  39. static inline int isxdigit(int a)
  40. {
  41. unsigned int ua = (unsigned int)a;
  42. return (int)(((ua - (unsigned)'0') < 10U) || ((ua | 32U) - (unsigned)'a' < 6U));
  43. }
  44. static inline int tolower(int chr)
  45. {
  46. return (chr >= (int)'A' && chr <= (int)'Z') ? (chr + 32) : (chr);
  47. }
  48. static inline int islower(int c)
  49. {
  50. return ((unsigned)c - 'a') < 26;
  51. }
  52. static inline int toupper(int chr)
  53. {
  54. return (int)((chr >= (int)'a' && chr <= (int)'z') ? (chr - 32) : (chr));
  55. }
  56. static inline int isalnum(int chr)
  57. {
  58. return (int)(isalpha(chr) || isdigit(chr));
  59. }
  60. static inline int isblank(int c)
  61. {
  62. return (c == ' ' || c == '\t');
  63. }
  64. static inline int iscntrl(int c)
  65. {
  66. return ((unsigned)c < 0x20 || c == 0x7F);
  67. }
  68. static inline int ispunct(int c)
  69. {
  70. return isgraph(c) && !isalnum(c);
  71. }
  72. #ifdef __cplusplus
  73. }
  74. #endif
  75. #endif /*MLIBC_CTYPE_H__*/