home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / detk45he.zip / libc / string.h < prev    next >
Text File  |  1999-03-15  |  18KB  |  379 lines

  1. #if __IBMC__ || __IBMCPP__
  2. #pragma info( none )
  3. #ifndef __CHKHDR__
  4.    #pragma info( none )
  5. #endif
  6. #pragma info( restore )
  7. #endif
  8.  
  9. #ifndef __string_h
  10.    #define __string_h
  11.  
  12.    #ifdef __cplusplus
  13.       extern "C" {
  14.    #endif
  15.  
  16.    #ifndef  _LNK_CONV
  17.       #if __IBMC__ || __IBMCPP__ || defined(_OPTLINK_SUPPORTED)
  18.          #define _LNK_CONV   _Optlink
  19.       #else
  20.          #define _LNK_CONV
  21.       #endif
  22.    #endif
  23.  
  24.    #ifndef _IMPORT
  25.       #ifdef __IMPORTLIB__
  26.          #define _IMPORT _Import
  27.       #else
  28.          #define _IMPORT
  29.       #endif
  30.    #endif
  31.  
  32.    /********************************************************************/
  33.    /*  <string.h> header file                                          */
  34.    /*                                                                  */
  35.    /*  (C) Copyright IBM Corp. 1991, 1995.                             */
  36.    /*  - Licensed Material - Program-Property of IBM                   */
  37.    /*  - All rights reserved                                           */
  38.    /*                                                                  */
  39.    /********************************************************************/
  40.  
  41.    #ifndef __size_t
  42.       #define __size_t
  43.       typedef unsigned int size_t;
  44.    #endif
  45.  
  46.    #ifndef NULL
  47.       #if (defined(__EXTENDED__)  || defined( __cplusplus ))
  48.          #define NULL 0
  49.       #else
  50.          #define NULL ((void *)0)
  51.       #endif
  52.    #endif
  53.  
  54.    #if __THW_INTEL__ && (__IBMC__ | __IBMCPP__)
  55.  
  56.       char * _Builtin __strcat( char *, const char * );
  57.       char * _Builtin __strchr( const char *, int );
  58.       int    _Builtin __strcmp( const char *, const char * );
  59.       char * _Builtin __strcpy( char*, const char * );
  60.       size_t _Builtin __strlen( const char * );
  61.       char * _Builtin __strncat( char *, const char *, size_t );
  62.       int    _Builtin __strncmp( const char *, const char *, size_t );
  63.       char * _Builtin __strncpy( char *, const char *, size_t );
  64.       char * _Builtin __strrchr( const char *, int );
  65.  
  66.       #ifdef __cplusplus
  67.          inline char * _LNK_CONV strcat( char * s1, const char * s2 )
  68.                                { return __strcat( s1, s2 ); }
  69.          inline char * _LNK_CONV strchr( const char * s, int ch )
  70.                                { return __strchr( s, ch ); }
  71.          inline int    _LNK_CONV strcmp( const char * s1, const char * s2 )
  72.                                { return __strcmp( s1, s2 ); }
  73.          inline char * _LNK_CONV strcpy( char * s1, const char * s2 )
  74.                                { return __strcpy( s1, s2 ); }
  75.          inline size_t _LNK_CONV strlen( const char * s )
  76.                                { return __strlen( s ); }
  77.          inline char * _LNK_CONV strncat( char * s1, const char * s2, size_t len )
  78.                                { return __strncat( s1, s2, len ); }
  79.          inline int    _LNK_CONV strncmp( const char * s1, const char * s2, size_t len )
  80.                                { return __strncmp( s1, s2, len ); }
  81.          inline char * _LNK_CONV strncpy( char * s1, const char * s2, size_t len )
  82.                                { return __strncpy( s1, s2, len ); }
  83.          inline char * _LNK_CONV strrchr( const char * s1, int ch )
  84.                                { return __strrchr( s1, ch ); }
  85.       #else
  86.          char * _IMPORT _LNK_CONV strcat( char *, const char * );
  87.          char * _IMPORT _LNK_CONV strchr( const char *, int );
  88.          int    _IMPORT _LNK_CONV strcmp( const char *, const char * );
  89.          char * _IMPORT _LNK_CONV strcpy( char *, const char * );
  90.          size_t _IMPORT _LNK_CONV strlen( const char * );
  91.          char * _IMPORT _LNK_CONV strncat( char *, const char *, size_t );
  92.          int    _IMPORT _LNK_CONV strncmp( const char *, const char *, size_t );
  93.          char * _IMPORT _LNK_CONV strncpy( char *, const char *, size_t );
  94.          char * _IMPORT _LNK_CONV strrchr( const char *, int );
  95.  
  96.          #define strcat( x, y )     __strcat( (x), (y) )
  97.          #define strchr( x, y )     __strchr( (x), (y) )
  98.          #define strcmp( x, y )     __strcmp( (x), (y) )
  99.          #define strcpy( x, y )     __strcpy( (x), (y) )
  100.          #define strlen( x )        __strlen( (x) )
  101.          #define strncat( x, y, z ) __strncat( (x), (y), (z) )
  102.          #define strncmp( x, y, z ) __strncmp( (x), (y), (z) )
  103.          #define strncpy( x, y, z ) __strncpy( (x), (y), (z) )
  104.          #define strrchr( x, y )    __strrchr( (x), (y) )
  105.       #endif
  106.  
  107.    #elif __THW_PPC__ && (__IBMC__ || __IBMCPP__)
  108.  
  109.       #ifdef __cplusplus
  110.          extern "builtin" char *__strcpy(char *s1, const char *s2);
  111.          extern "builtin" int   __strcmp(const char *s1, const char *s2);
  112.          extern "builtin" size_t __strlen(const char *s);
  113.          extern "builtin" char *__strchr(const char *s, int c);
  114.          extern "builtin" char *__strrchr(const char *s, int c);
  115.          extern "builtin" char  *__strcat(char *s1, const char *s2);
  116.       #else
  117.          char * _Builtin  __strcpy(char *s1, const char *s2);
  118.          int    _Builtin  __strcmp(const char *s1, const char *s2);
  119.          size_t _Builtin  __strlen(const char *s);
  120.          char * _Builtin  __strchr(const char *s, int c);
  121.          char * _Builtin  __strrchr(const char *s, int c);
  122.          char * _Builtin  __strcat(char *s1, const char *s2);
  123.       #endif
  124.  
  125.       char * strncat( char *, const char *, size_t );
  126.       int    strncmp( const char *, const char *, size_t );
  127.       char * strncpy( char *, const char *, size_t );
  128.       char * strrchr( const char *, int );
  129.  
  130.       #if defined(__STR__)
  131.          #ifdef __cplusplus
  132.             inline char *strcpy(char *s1, const char *s2) { return __strcpy (s1, s2);}
  133.             inline int   strcmp(const char *s1, const char *s2)     { return __strcmp (s1, s2);}
  134.             inline size_t strlen(const char *s) { return __strlen (s); }
  135.             inline char  *strchr(const char *s, int c) { return __strchr (s, c); }
  136.             inline char  *strrchr(const char *s, int c) { return __strrchr (s, c); }
  137.             inline char  *strcat(char *s1, const char *s2) { return __strcat (s1, s2); }
  138.          #else
  139.             #define strcpy(__s1,__s2) __strcpy(__s1,__s2)
  140.             #define strcmp(__s1,__s2) __strcmp(__s1,__s2)
  141.             #define strlen(__s1) __strlen(__s1)
  142.             #define strchr(__s1,__c) __strchr(__s1,__c)
  143.             #define strrchr(__s1,__c) __strrchr(__s1,__c)
  144.             #define strcat(__s1,__s2) __strcat(__s1,__s2)
  145.          #endif
  146.       #else
  147.          char * strcpy(char *s1, const char *s2);
  148.          int  strcmp(const char *s1, const char *s2);
  149.          size_t strlen(const char *s);
  150.          char * strchr(const char *s, int c);
  151.          char * strrchr(const char *s, int c);
  152.          char * strcat(char *s1, const char *s2);
  153.       #endif
  154.  
  155.    #else
  156.  
  157.       char * _IMPORT _LNK_CONV strcat( char *, const char * );
  158.       char * _IMPORT _LNK_CONV strchr( const char *, int );
  159.       int    _IMPORT _LNK_CONV strcmp( const char *, const char * );
  160.       char * _IMPORT _LNK_CONV strcpy( char *, const char * );
  161.       size_t _IMPORT _LNK_CONV strlen( const char * );
  162.       char * _IMPORT _LNK_CONV strncat( char *, const char *, size_t );
  163.       int    _IMPORT _LNK_CONV strncmp( const char *, const char *, size_t );
  164.       char * _IMPORT _LNK_CONV strncpy( char *, const char *, size_t );
  165.       char * _IMPORT _LNK_CONV strrchr( const char *, int );
  166.  
  167.    #endif
  168.  
  169.       
  170.    int    _IMPORT _LNK_CONV strcoll( const char *, const char * );
  171.    size_t _IMPORT _LNK_CONV strcspn( const char *, const char * );
  172.    char * _IMPORT _LNK_CONV strerror( int );
  173.    char * _IMPORT _LNK_CONV strpbrk( const char *, const char * );
  174.    size_t _IMPORT _LNK_CONV strspn( const char *, const char * );
  175.    char * _IMPORT _LNK_CONV strstr( const char *, const char * );
  176.    char * _IMPORT _LNK_CONV strtok( char*, const char * );
  177.    size_t _IMPORT _LNK_CONV strxfrm( char *, const char *, size_t );
  178.  
  179.  
  180.    #ifndef __memory_h
  181.       #define __memory_h
  182.  
  183.       #if __THW_INTEL__ && (__IBMC__ || __IBMCPP__)
  184.          void * _Builtin __memcpy( void *, const void *, size_t );
  185.          void * _Builtin __memchr( const void *, int, size_t );
  186.          int    _Builtin __memcmp( const void *, const void *, size_t );
  187.          void * _Builtin __memset( void *, int, size_t );
  188.          void * _Builtin __memmove( void *, const void *, size_t );
  189.  
  190.          #ifdef __cplusplus
  191.             inline void * _LNK_CONV memcpy( void * m1, const void * m2, size_t len )
  192.                                   { return __memcpy( m1, m2, len ); }
  193.             inline void * _LNK_CONV memchr( const void * m, int ch, size_t len )
  194.                                   { return __memchr( m, ch, len ); }
  195.             inline int    _LNK_CONV memcmp( const void * m1, const void * m2, size_t len )
  196.                                   { return __memcmp( m1, m2, len ); }
  197.             inline void * _LNK_CONV memset( void * m, int ch, size_t len )
  198.                                   { return __memset( m, ch, len ); }
  199.             inline void * _LNK_CONV memmove( void * m1, const void * m2, size_t len )
  200.                                   { return __memmove( m1, m2, len ); }
  201.          #else
  202.             void * _IMPORT _LNK_CONV memcpy( void *, const void *, size_t );
  203.             void * _IMPORT _LNK_CONV memchr( const void *, int, size_t );
  204.             int    _IMPORT _LNK_CONV memcmp( const void *, const void *, size_t );
  205.             void * _IMPORT _LNK_CONV memset( void *, int, size_t );
  206.             void * _IMPORT _LNK_CONV memmove( void *, const void *, size_t );
  207.  
  208.             #define memcpy( x, y, z )  __memcpy( (x), (y), (z) )
  209.             #define memchr( x, y, z )  __memchr( (x), (y), (z) )
  210.             #define memcmp( x, y, z )  __memcmp( (x), (y), (z) )
  211.             #define memset( x, y, z )  __memset( (x), (y), (z) )
  212.             #define memmove( x, y, z ) __memmove( (x), (y), (z) )
  213.          #endif
  214.       #elif __THW_PPC__ && (__IBMC__ || __IBMCPP__)
  215.          #ifdef __cplusplus
  216.             extern "builtin" void  *__memchr(const void *s, int c, size_t n);
  217.             extern "builtin" void  *__memcpy(void *s1, const void *s2, size_t n);
  218.             extern "builtin" void  *__memmove(void *s1, const void *s2, size_t n);
  219.             extern "builtin" int __memcmp(const void *s1, const void *s2, size_t n);
  220.             extern "builtin" void  *__memset(void *s, int c, size_t n);
  221.          #else
  222.             void  * _Builtin __memchr(const void *s, int c, size_t n);
  223.             void  * _Builtin __memcpy(void *s1, const void *s2, size_t n);
  224.             void *  _Builtin __memmove(void *s1, const void *s2, size_t n);
  225.             int     _Builtin __memcmp(const void *s1, const void *s2, size_t n);
  226.             void *  _Builtin __memset(void *s, int c, size_t n);
  227.          #endif
  228.          #if defined(__STR__)
  229.             #ifdef __cplusplus
  230.                inline void  *memchr(const void *s, int c, size_t n) { return __memchr (s, c, n); }
  231.                inline void  *memcpy(void *s1, const void *s2, size_t n) { return __memcpy (s1, s2, n); }
  232.                inline void  *memmove(void *s1, const void *s2, size_t n) { return __memmove (s1, s2, n); }
  233.                inline int    memcmp(const void *s1, const void *s2, size_t n) { return __memcmp (s1, s2, n); }
  234.                inline void  *memset(void *s, int c, size_t n) { return __memset(s, c, n); }
  235.             #else
  236.                #define memchr(__s1,__c,__n) __memchr(__s1,__c,__n)
  237.                #define memcpy(__s1,__s2,__n) __memcpy(__s1,__s2,__n)
  238.                #define memmove(__s1,__s2,__n) __memmove(__s1,__s2,__n)
  239.                #define memcmp(__s1,__s2,__n) __memcmp(__s1,__s2,__n)
  240.                #define memset(__s1,__c,__n) __memset(__s1,__c,__n)
  241.             #endif
  242.          #else
  243.             void * memcpy( void *, const void *, size_t );
  244.             void * memchr( const void *, int, size_t );
  245.             int    memcmp( const void *, const void *, size_t );
  246.             void * memset( void *, int, size_t );
  247.             void * memmove( void *, const void *, size_t );
  248.          #endif
  249.  
  250.       #else
  251.          void * _IMPORT _LNK_CONV memcpy( void *, const void *, size_t );
  252.          void * _IMPORT _LNK_CONV memchr( const void *, int, size_t );
  253.          int    _IMPORT _LNK_CONV memcmp( const void *, const void *, size_t );
  254.          void * _IMPORT _LNK_CONV memset( void *, int, size_t );
  255.          void * _IMPORT _LNK_CONV memmove( void *, const void *, size_t );
  256.       #endif
  257.  
  258.       #if defined( __EXTENDED__ )
  259.  
  260.          void * _IMPORT _LNK_CONV memccpy( void *, void *, int, unsigned int );
  261.          int    _IMPORT _LNK_CONV memicmp( void *, void *, unsigned int );
  262.  
  263.          #define _fmemcpy( x, y, z )     memcpy( (x), (y), (z) )
  264.          #define _fmemchr( x, y, z )     memchr( (x), (y), (z) )
  265.          #define _fmemcmp( x, y, z )     memcmp( (x), (y), (z) )
  266.          #define _fmemset( x, y, z )     memset( (x), (y), (z) )
  267.          #define _fmemccpy( w, x, y, z ) memccpy( (w), (x), (y), (z) )
  268.          #define _fmemicmp( x, y, z )    memicmp( (x), (y), (z) )
  269.  
  270.       #endif
  271.  
  272.    #endif
  273.  
  274.    #if defined(__EXTENDED__)
  275.  
  276.       char * _IMPORT _LNK_CONV strdup( const char * );
  277.       int    _IMPORT _LNK_CONV stricmp( const char *, const char * );
  278.       char * _IMPORT _LNK_CONV strlwr( char * );
  279.       int    _IMPORT _LNK_CONV strnicmp( const char *, const char *, size_t );
  280.       char * _IMPORT _LNK_CONV strupr( char * );
  281.  
  282.       int    _IMPORT _LNK_CONV strcmpi( const char *, const char * );
  283.       char * _IMPORT _LNK_CONV strrev( char * );
  284.       char * _IMPORT _LNK_CONV strset( char *, int );
  285.       char * _IMPORT _LNK_CONV strnset( char *, int, size_t );
  286.       char * _IMPORT _LNK_CONV _strerror( const char * );
  287.  
  288.       #define _fmemmove( x, y, z )  memmove( (x), (y), (z) )
  289.       #define _fstrcat( x, y )      strcat( (x), (y) )
  290.       #define _fstrchr( x, y )      strchr( (x), (y) )
  291.       #define _fstrcmp( x, y )      strcmp( (x), (y) )
  292.       #define _fstrcpy( x, y )      strcpy( (x), (y) )
  293.       #define _fstrlen( x )         strlen( (x) )
  294.       #define _fstrncat( x, y, z )  strncat( (x), (y), (z) )
  295.       #define _fstrncmp( x, y, z )  strncmp( (x), (y), (z) )
  296.       #define _fstrncpy( x, y, z )  strncpy( (x), (y), (z) )
  297.       #define _fstrrchr( x, y )     strrchr( (x), (y) )
  298.  
  299.       size_t _IMPORT _LNK_CONV _fstrcspn( const char *, const char * );
  300.       char * _IMPORT _LNK_CONV _fstrdup( const char * );
  301.       char * _IMPORT _LNK_CONV _nstrdup( const char * );
  302.       int    _IMPORT _LNK_CONV _fstricmp( const char *, const char * );
  303.       char * _IMPORT _LNK_CONV _fstrlwr( char * );
  304.       int    _IMPORT _LNK_CONV _fstrnicmp( const char *, const char *, size_t );
  305.       char * _IMPORT _LNK_CONV _fstrnset( char *, int, size_t );
  306.       char * _IMPORT _LNK_CONV _fstrpbrk( const char *, const char * );
  307.       char * _IMPORT _LNK_CONV _fstrrev( char * );
  308.       char * _IMPORT _LNK_CONV _fstrset( char *, int );
  309.       size_t _IMPORT _LNK_CONV _fstrspn( const char *, const char * );
  310.       char * _IMPORT _LNK_CONV _fstrstr( const char *, const char * );
  311.       char * _IMPORT _LNK_CONV _fstrtok( char*, const char * );
  312.       char * _IMPORT _LNK_CONV _fstrupr( char * );
  313.  
  314.       #if __IBMC__ || __IBMCPP__
  315.          #if __WINDOWS__ && __THW_INTEL__
  316.             #pragma map( _fstrcspn , "?strcspn"  )
  317.             #pragma map( _fstrdup  , "?strdup"   )
  318.             #pragma map( _nstrdup  , "?strdup"   )
  319.             #pragma map( _fstricmp , "?stricmp"  )
  320.             #pragma map( _fstrlwr  , "?strlwr"   )
  321.             #pragma map( _fstrnicmp, "?strnicmp" )
  322.             #pragma map( _fstrnset , "?strnset"  )
  323.             #pragma map( _fstrpbrk , "?strpbrk"  )
  324.             #pragma map( _fstrrev  , "?strrev"   )
  325.             #pragma map( _fstrset  , "?strset"   )
  326.             #pragma map( _fstrspn  , "?strspn"   )
  327.             #pragma map( _fstrstr  , "?strstr"   )
  328.             #pragma map( _fstrtok  , "?strtok"   )
  329.             #pragma map( _fstrupr  , "?strupr"   )
  330.          #else
  331.             #pragma map( _fstrcspn , "strcspn"  )
  332.             #pragma map( _fstrdup  , "strdup"   )
  333.             #pragma map( _nstrdup  , "strdup"   )
  334.             #pragma map( _fstricmp , "stricmp"  )
  335.             #pragma map( _fstrlwr  , "strlwr"   )
  336.             #pragma map( _fstrnicmp, "strnicmp" )
  337.             #pragma map( _fstrnset , "strnset"  )
  338.             #pragma map( _fstrpbrk , "strpbrk"  )
  339.             #pragma map( _fstrrev  , "strrev"   )
  340.             #pragma map( _fstrset  , "strset"   )
  341.             #pragma map( _fstrspn  , "strspn"   )
  342.             #pragma map( _fstrstr  , "strstr"   )
  343.             #pragma map( _fstrtok  , "strtok"   )
  344.             #pragma map( _fstrupr  , "strupr"   )
  345.          #endif
  346.       #else
  347.          #define _fstrcspn strcspn
  348.          #define _fstrdup strdup
  349.          #define _nstrdup strdup
  350.          #define _fstricmp stricmp
  351.          #define _fstrlwr strlwr
  352.          #define _fstrnicmp strnicmp
  353.          #define _fstrnset strnset
  354.          #define _fstrpbrk strpbrk
  355.          #define _fstrrev strrev
  356.          #define _fstrset strset
  357.          #define _fstrspn strspn
  358.          #define _fstrstr strstr
  359.          #define _fstrtok strtok
  360.          #define _fstrupr strupr
  361.      #endif
  362.  
  363.    #endif
  364.  
  365.    #ifdef __cplusplus
  366.       }
  367.    #endif
  368.  
  369. #endif
  370.  
  371. #if __IBMC__ || __IBMCPP__
  372. #pragma info( none )
  373. #ifndef __CHKHDR__
  374.    #pragma info( restore )
  375. #endif
  376. #pragma info( restore )
  377. #endif
  378.  
  379.