home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / nlsnps.zip / nlsSearch.cpp < prev    next >
C/C++ Source or Header  |  1996-09-05  |  4KB  |  183 lines

  1. #include <os2.h>
  2. #include "nls.h"
  3.  
  4. PUCHAR nlsSearch(PUCHAR psz, UINT ui)
  5. {  if (ui <= 0xff)
  6.    {  while (*psz != 0)
  7.       {  if (*psz == (UCHAR)ui) return psz;
  8.      else psz = nlsNext(psz);
  9.       }
  10.    }
  11.    else
  12.    {  while (*psz != 0)
  13.       {  if (nlsIsDBCS(*psz))
  14.      {  if ((((UINT)psz[0] << 8) | (UINT)psz[1]) == ui) return psz;
  15.         else psz += 2;
  16.      }
  17.      else psz++;
  18.       }
  19.    }
  20.  
  21.    return NULL;
  22. }
  23.  
  24. PUCHAR nlsSearchCollate(PUCHAR psz, UINT ui)
  25. {  if (ui <= 0xff)
  26.    {  UCHAR uc = nlsCollate(ui);
  27.  
  28.       while (*psz != 0)
  29.       {  if (nlsCollate(*psz) == uc) return psz;
  30.      else psz = nlsNext(psz);
  31.       }
  32.    }
  33.    else
  34.    {  while (*psz != 0)
  35.       {  if (nlsIsDBCS(*psz))
  36.      {  if ((((UINT)psz[0] << 8) | (UINT)psz[1]) == ui) return psz;
  37.         else psz += 2;
  38.      }
  39.      else psz++;
  40.       }
  41.    }
  42.  
  43.    return NULL;
  44. }
  45.  
  46. PUCHAR nlsSearch(PUCHAR pb, UINT ui, UINT cbLength)
  47. {  PUCHAR pbLimit = pb + cbLength;
  48.  
  49.    if (ui <= 0xff)
  50.    {  while (pb < pbLimit)
  51.       {  if (*pb == (UCHAR)ui) return pb;
  52.      else pb = nlsNext(pb);
  53.       }
  54.    }
  55.    else
  56.    {  while (pb < pbLimit)
  57.       {  if (nlsIsDBCS(*pb))
  58.      {  if ((((UINT)pb[0] << 8) | (UINT)pb[1]) == ui) return pb;
  59.         else pb += 2;
  60.      }
  61.      else pb++;
  62.       }
  63.    }
  64.  
  65.    return NULL;
  66. }
  67.  
  68. PUCHAR nlsSearchCollate(PUCHAR pb, UINT ui, UINT cbLength)
  69. {  PUCHAR pbLimit = pb + cbLength;
  70.  
  71.    if (ui <= 0xff)
  72.    {  UCHAR uc = nlsCollate(ui);
  73.  
  74.       while (pb < pbLimit)
  75.       {  if (nlsCollate(*pb) == uc) return pb;
  76.      else pb = nlsNext(pb);
  77.       }
  78.    }
  79.    else
  80.    {  while (pb < pbLimit)
  81.       {  if (nlsIsDBCS(*pb))
  82.      {  if ((((UINT)pb[0] << 8) | (UINT)pb[1]) == ui) return pb;
  83.         else pb += 2;
  84.      }
  85.      else pb++;
  86.       }
  87.    }
  88.  
  89.    return NULL;
  90. }
  91.  
  92. PUCHAR nlsSearchLast(PUCHAR psz, UINT ui)
  93. {  PUCHAR pszPosition = NULL;
  94.  
  95.    if (ui <= 0xff)
  96.    {  while (*psz != 0)
  97.       {  if (*psz == (UCHAR)ui) pszPosition = psz;
  98.      psz = nlsNext(psz);
  99.       }
  100.    }
  101.    else
  102.    {  while (*psz != 0)
  103.       {  if (nlsIsDBCS(*psz))
  104.      {  if ((((UINT)psz[0] << 8) | (UINT)psz[1]) == ui) pszPosition = psz;
  105.         psz += 2;
  106.      }
  107.      else psz++;
  108.       }
  109.    }
  110.  
  111.    return pszPosition;
  112. }
  113.  
  114. PUCHAR nlsSearchCollateLast(PUCHAR psz, UINT ui)
  115. {  PUCHAR pszPosition = NULL;
  116.  
  117.    if (ui <= 0xff)
  118.    {  UCHAR uc = nlsCollate(ui);
  119.  
  120.       while (*psz != 0)
  121.       {  if (nlsCollate(*psz) == uc) pszPosition = psz;
  122.      psz = nlsNext(psz);
  123.       }
  124.    }
  125.    else
  126.    {  while (*psz != 0)
  127.       {  if (nlsIsDBCS(*psz))
  128.      {  if ((((UINT)psz[0] << 8) | (UINT)psz[1]) == ui) pszPosition = psz;
  129.         psz += 2;
  130.      }
  131.      else psz++;
  132.       }
  133.    }
  134.  
  135.    return pszPosition;
  136. }
  137.  
  138. PUCHAR nlsSearchLast(PUCHAR pb, UINT ui, UINT cbLength)
  139. {  PUCHAR pbPosition = NULL, pbLimit = pb + cbLength;
  140.  
  141.    if (ui <= 0xff)
  142.    {  while (pb < pbLimit)
  143.       {  if (*pb == (UCHAR)ui) pbPosition = pb;
  144.      else pb = nlsNext(pb);
  145.       }
  146.    }
  147.    else
  148.    {  while (pb < pbLimit)
  149.       {  if (nlsIsDBCS(*pb))
  150.      {  if ((((UINT)pb[0] << 8) | (UINT)pb[1]) == ui) pbPosition = pb;
  151.         pb += 2;
  152.      }
  153.      else pb++;
  154.       }
  155.    }
  156.  
  157.    return pbPosition;
  158. }
  159.  
  160. PUCHAR nlsSearchCollateLast(PUCHAR pb, UINT ui, UINT cbLength)
  161. {  PUCHAR pbPosition = NULL, pbLimit = pb + cbLength;
  162.  
  163.    if (ui <= 0xff)
  164.    {  UCHAR uc = nlsCollate(ui);
  165.  
  166.       while (pb < pbLimit)
  167.       {  if (nlsCollate(*pb) == uc) pbPosition = pb;
  168.      else pb = nlsNext(pb);
  169.       }
  170.    }
  171.    else
  172.    {  while (pb < pbLimit)
  173.       {  if (nlsIsDBCS(*pb))
  174.      {  if ((((UINT)pb[0] << 8) | (UINT)pb[1]) == ui) pbPosition = pb;
  175.         pb += 2;
  176.      }
  177.      else pb++;
  178.       }
  179.    }
  180.  
  181.    return pbPosition;
  182. }
  183.