case.c
上传用户:xiaoan1112
上传日期:2013-04-11
资源大小:19621k
文件大小:2k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. /*
  2. COW : Character Oriented Windows
  3. case.c: conversion of foreign lower case to upper case
  4. */
  5. #define COW
  6. #include <cow.h>
  7. #include "case.h"
  8. /* 
  9.   -- SzLcUc: maps lower -> upper case for special foreign characters
  10.   -- This string contains the uppercase/lowercase correspondence list for
  11.      extended characters.  Every character in an even position in the list
  12.      is lowercase.  The character following it is its uppercase representation.
  13.      Thus, the even entries contain all the lowercase letters among the upper
  14.      128 characters; the odd entries contain the uppercase letters.
  15.   -- NOTE:  Some entries may contain a normal (ASCII) character.  This
  16.      indicates that there is no uppercase (or lowercase) equivalent for the
  17.      character's partner.
  18.   -- Corresponds to IBM Code Page 850
  19. */
  20. static char szLcUc[] = "202220212324210322205267227353207200204216206217224231201232221222244245240265203266211323241326215336214327213330242340225343223342243351226352306307246101325111233235344345247117354355230131";
  21. /* Here is the character set for the list:
  22. 202 e acute
  23. 220 E acute
  24. 212 e grave
  25. 324 E grave
  26. 210 e circumflex
  27. 322 E circumflex
  28. 205 a grave
  29. 267 A grave
  30. 227 u grave
  31. 353 U grave
  32. 207 c cedilla
  33. 200 C cedilla
  34. 204 a umlaut
  35. 216 A umlaut
  36. 206 a circle
  37. 217 A circle
  38. 224 o umlaut
  39. 231 O umlaut
  40. 201 u umlaut
  41. 232 U umlaut
  42. 221 ae
  43. 222 AE
  44. 244 n tilde
  45. 245 N tilde
  46. 240 a acute
  47. 265 A acute
  48. 203 a circumflex
  49. 266 A circumflex
  50. 211 e umlaut
  51. 323 E umlaut
  52. 241 i acute
  53. 326 I acute
  54. 215 i grave
  55. 336 I grave
  56. 214 i circumflex
  57. 327 I circumflex
  58. 213 i umlaut
  59. 330 I umlaut
  60. 242 o acute
  61. 340 O acute
  62. 225 o grave
  63. 343 O grave
  64. 223 o circumflex
  65. 342 O circumflex
  66. 243 u acute
  67. 351 U acute
  68. 226 u circumflex
  69. 352 U circumflex
  70. 306 a tilde
  71. 307 A tilde
  72. 246 a ordfeminine
  73. 101 A
  74. 325 i no dot
  75. 111 I
  76. 233 o slash
  77. 235 O slash
  78. 344 o tilde
  79. 345 O tilde
  80. 247 o ordmasculine
  81. 117 O
  82. 354 y acute
  83. 355 Y acute
  84. 230 y umlaut
  85. 131 Y
  86. */
  87. PRIVATE char FARPRIVATE
  88. ChUpperFromChExt(ch)
  89. char ch;
  90. /*
  91.   -- converts extended lower case to upper case using szLcUc
  92. */
  93. {
  94. char *pch;
  95. for (pch = szLcUc; *pch != 0; pch++)
  96. {
  97. if (ch == *pch)  /* even index means lower case */
  98. {
  99. if ((pch - szLcUc) & 1)
  100. return(ch);
  101. else
  102. return(*(pch + 1));
  103. }
  104. }
  105. return(ch);
  106. }