alg_jisx0201.h 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #define JISX0201_R_ENCODE(c, assi) \
  2. if ((c) < 0x80 && (c) != 0x5c && (c) != 0x7e) { \
  3. (assi) = (c); \
  4. } \
  5. else if ((c) == 0x00a5) { \
  6. (assi) = 0x5c; \
  7. } \
  8. else if ((c) == 0x203e) { \
  9. (assi) = 0x7e; \
  10. }
  11. #define JISX0201_K_ENCODE(c, assi) \
  12. if ((c) >= 0xff61 && (c) <= 0xff9f) { \
  13. (assi) = (c) - 0xfec0; \
  14. }
  15. #define JISX0201_ENCODE(c, assi) \
  16. JISX0201_R_ENCODE(c, assi) \
  17. else JISX0201_K_ENCODE(c, assi)
  18. #define JISX0201_R_DECODE_CHAR(c, assi) \
  19. if ((c) < 0x5c) { \
  20. (assi) = (c); \
  21. } \
  22. else if ((c) == 0x5c) { \
  23. (assi) = 0x00a5; \
  24. } \
  25. else if ((c) < 0x7e) { \
  26. (assi) = (c); \
  27. } \
  28. else if ((c) == 0x7e) { \
  29. (assi) = 0x203e; \
  30. } \
  31. else if ((c) == 0x7f) { \
  32. (assi) = 0x7f; \
  33. }
  34. #define JISX0201_R_DECODE(c, writer) \
  35. if ((c) < 0x5c) { \
  36. OUTCHAR(c); \
  37. } \
  38. else if ((c) == 0x5c) { \
  39. OUTCHAR(0x00a5); \
  40. } \
  41. else if ((c) < 0x7e) { \
  42. OUTCHAR(c); \
  43. } \
  44. else if ((c) == 0x7e) { \
  45. OUTCHAR(0x203e); \
  46. } \
  47. else if ((c) == 0x7f) { \
  48. OUTCHAR(0x7f); \
  49. }
  50. #define JISX0201_K_DECODE(c, writer) \
  51. if ((c) >= 0xa1 && (c) <= 0xdf) { \
  52. OUTCHAR(0xfec0 + (c)); \
  53. }
  54. #define JISX0201_K_DECODE_CHAR(c, assi) \
  55. if ((c) >= 0xa1 && (c) <= 0xdf) { \
  56. (assi) = 0xfec0 + (c); \
  57. }
  58. #define JISX0201_DECODE(c, writer) \
  59. JISX0201_R_DECODE(c, writer) \
  60. else JISX0201_K_DECODE(c, writer)