home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / include / idbcsbuf.hpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-22  |  8.6 KB  |  253 lines

  1.  
  2. #ifndef _IDBCSBUF_
  3. #define _IDBCSBUF_
  4. /*******************************************************************************
  5. * FILE NAME: idbcsbuf.hpp                                                      *
  6. *                                                                              *
  7. * DESCRIPTION:                                                                 *
  8. *   Declaration of the classes:                                                *
  9. *     IDBCSBuffer                                                              *
  10. *                                                                              *
  11. * COPYRIGHT:                                                                   *
  12. *   IBM Open Class Library                                                     *
  13. *   (C) Copyright International Business Machines Corporation 1992, 1996       *
  14. *   Licensed Material - Program-Property of IBM - All Rights Reserved.         *
  15. *   US Government Users Restricted Rights - Use, duplication, or disclosure    *
  16. *   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
  17. *                                                                              *
  18. *******************************************************************************/
  19. #include <ibuffer.hpp>
  20.  
  21. extern "C" {
  22. #include <stdlib.h>
  23. #include <limits.h>
  24. #include <ctype.h>
  25. #include <string.h>
  26. #ifdef IC_NLS
  27.    #include <wchar.h>
  28. #if defined(IC_PMWIN) || defined(IC_MVS400)
  29.    #include <wctype.h>
  30. #endif
  31. #endif
  32. }
  33.  
  34. #pragma pack(4)
  35.  
  36.  
  37.  
  38. class IDBCSBuffer : public IBuffer {
  39. public:
  40.  
  41. #ifdef IC_NLS
  42. /*------------------------------- Comparisons --------------------------------*/
  43. /*  See ibuffer.hpp for definition of Comparison  */
  44.  
  45. virtual Comparison
  46.   compare ( const void* p,
  47.             unsigned    len ) const;
  48. #endif
  49.  
  50. /*------------------------- Subset -------------------------------------------*/
  51. virtual IBuffer
  52.  *subString         ( unsigned startPos,
  53.                       unsigned len,
  54.                       char     padCharacter ) const;
  55.  
  56. #ifdef IC_NLS
  57. virtual IBuffer
  58.  *subString         ( unsigned startPos ) const;
  59.  
  60. /*--------------------------------- Testing ----------------------------------*/
  61. virtual Boolean
  62.   isAlphanumeric ( ) const,
  63.   isAlphabetic   ( ) const,
  64.   isASCII        ( ) const,
  65.   isControl      ( ) const,
  66.   isDigits       ( ) const,
  67.   isGraphics     ( ) const,
  68.   isHexDigits    ( ) const,
  69.   isLowerCase    ( ) const,
  70.   isPrintable    ( ) const,
  71.   isPunctuation  ( ) const,
  72.   isUpperCase    ( ) const,
  73.   isWhiteSpace   ( ) const;
  74. #endif
  75.  
  76. /*------------------------- NLS Testing --------------------------------------*/
  77. virtual Boolean
  78.   isMBCS            ( ) const,
  79.   isDBCS            ( ) const,
  80.   isSBCS            ( ) const,
  81.   isValidMBCS       ( ) const,
  82.   isValidDBCS       ( ) const,
  83.   includesMBCS      ( ) const,
  84.   includesDBCS      ( ) const,
  85.   includesSBCS      ( ) const;
  86.  
  87.  
  88.  
  89. /*------------------------- Searches -----------------------------------------*/
  90. virtual unsigned
  91.   indexOf           ( const IStringTest &aTest,
  92.                       unsigned           startPos = 1 ) const,
  93.   indexOf           ( const char        *pString,
  94.                       unsigned           len,
  95.                       unsigned           startPos = 1 ) const,
  96.   indexOfAnyBut     ( const char        *pString,
  97.                       unsigned           len,
  98.                       unsigned           startPos = 1 ) const,
  99.   indexOfAnyBut     ( const IStringTest &aTest,
  100.                       unsigned           startPos = 1 ) const,
  101.   indexOfAnyOf      ( const char        *pString,
  102.                       unsigned           len,
  103.                       unsigned           startPos = 1 ) const,
  104.   indexOfAnyOf      ( const IStringTest &aTest,
  105.                       unsigned           startPos = 1 ) const,
  106.   lastIndexOf       ( const IStringTest &aTest,
  107.                       unsigned           startPos = 1 ) const,
  108.   lastIndexOf       ( const char        *pString,
  109.                       unsigned           len,
  110.                       unsigned           startPos = 0 ) const,
  111.   lastIndexOfAnyBut ( const char        *pString,
  112.                       unsigned           len,
  113.                       unsigned           startPos = 0 ) const,
  114.   lastIndexOfAnyBut ( const IStringTest &aTest,
  115.                       unsigned           startPos = 0 ) const,
  116.   lastIndexOfAnyOf  ( const char        *pString,
  117.                       unsigned           len,
  118.                       unsigned           startPos = 0 ) const,
  119.   lastIndexOfAnyOf  ( const IStringTest &aTest,
  120.                       unsigned           startPos = 0 ) const;
  121.  
  122.  
  123. /*------------------------- Editing ------------------------------------------*/
  124. virtual IBuffer
  125.  *center            ( unsigned newLen,
  126.                       char     padCharacter ),
  127. #ifdef IC_NLS
  128.  *change            ( const char* pSource,
  129.                       unsigned    sourceLen,
  130.                       const char* pTarget,
  131.                       unsigned    targetLen,
  132.                       unsigned    startPos,
  133.                       unsigned    numChanges ),
  134. #endif
  135.  *insert            ( const char *pInsert,
  136.                       unsigned    insertLen,
  137.                       unsigned    pos,
  138.                       char        padCharacter ),
  139.  *leftJustify       ( unsigned newLen,
  140.                       char     padCharacter ),
  141.  *lowerCase         ( ),
  142.  *overlayWith       ( const char *overlay,
  143.                       unsigned    len,
  144.                       unsigned    pos,
  145.                       char        padCharacter ),
  146.  *remove            ( unsigned startPos,
  147.                       unsigned numChars ),
  148.  *reverse           ( ),
  149.  *rightJustify      ( unsigned newLen,
  150.                       char     padCharacter ),
  151.  *strip             ( const char             *pChars,
  152.                       unsigned                len,
  153.                       IStringEnum::StripMode  mode ),
  154.  *strip             ( const IStringTest      &aTest,
  155.                       IStringEnum::StripMode  mode ),
  156.  *translate         ( const char *pInputChars,
  157.                       unsigned    inputLen,
  158.                       const char *pOutputChars,
  159.                       unsigned    outputLen,
  160.                       char        padCharacter ),
  161.  *upperCase         ( );
  162.  
  163. /*------------------------- Allocation ---------------------------------------*/
  164. virtual IBuffer
  165.  *allocate          ( unsigned newLen ) const;
  166.  
  167. /*------------------------- Queries ------------------------------------------*/
  168. virtual IStringEnum::CharType
  169.   charType          ( unsigned index ) const;
  170.  
  171. virtual char
  172.  *next              ( const char *prev );
  173.  
  174. virtual const char
  175.  *next              ( const char *prev ) const;
  176.  
  177. protected:
  178.  
  179. /*------------------------- Search Initialization ----------------------------*/
  180. virtual unsigned
  181.   startSearch          ( unsigned startPos,
  182.                          unsigned searchLen ) const,
  183.   startBackwardsSearch ( unsigned startPos,
  184.                          unsigned searchLen ) const;
  185.  
  186.  
  187. /*------------------------- Protected Testing --------------------------------*/
  188. Boolean
  189.   isCharValid          ( unsigned    pos,
  190.                          const char *pValidChars,
  191.                          unsigned    numValidChars ) const;
  192.  
  193.  
  194. static Boolean
  195.   isSBC                ( char const *pChar );
  196.  
  197. /*------------------------- Protected Queries --------------------------------*/
  198. const char
  199.  *className            ( ) const;
  200.  
  201. static size_t
  202.   charLength           ( char const *pChar ),
  203.   maxCharLength        ( );
  204.  
  205. size_t
  206.   charLength           ( unsigned pos ) const,
  207.   prevCharLength       ( unsigned pos ) const;
  208.  
  209.  
  210. friend class IBuffer;
  211.  
  212. /*------------------------- Protected Constructors ---------------------------*/
  213.   IDBCSBuffer          ( unsigned bufLength );
  214.  ~IDBCSBuffer          ( );
  215.  
  216.  
  217. /*------------------------- Protected New Functions --------------------------*/
  218. /*------------- These functions are for Internal use only --------------------*/
  219. #ifdef IC_NLS
  220. #ifdef IC_HAS_RESTARTABLE
  221.  
  222. static Boolean
  223.   isSBC                ( char const *pChar , mbstate_t *pMBState );
  224.  
  225. static size_t
  226.   charLength           ( char const *pChar , mbstate_t *pMBState );
  227.  
  228. size_t
  229.   charLength           ( unsigned pos , mbstate_t *pMBState ) const,
  230.   prevCharLength       ( unsigned pos , mbstate_t *pMBState ) const;
  231. #endif
  232.  
  233. private:
  234.  
  235. unsigned
  236.   windexOfAnyBut     ( const IStringTest &aTest,
  237.                        unsigned           startPos = 1 ) const;
  238. #endif
  239.  
  240.  
  241.  
  242. }; // class IDBCSBuffer
  243.  
  244.  
  245.  
  246. #pragma pack()
  247.  
  248.   #include <idbcsbuf.inl>
  249.  
  250. #endif // _IDBCSBUF_
  251.  
  252.  
  253.