home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / include / stdio.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-20  |  13.6 KB  |  394 lines

  1. #if (defined(__IBMC__) || defined(__IBMCPP__))
  2. #pragma info( none )
  3. #ifndef __CHKHDR__
  4.    #pragma info( none )
  5. #endif
  6. #pragma info( restore )
  7. #endif
  8.  
  9. #ifndef __stdio_h
  10.    #define __stdio_h
  11.  
  12.    #ifdef __cplusplus
  13.       extern "C" {
  14.    #endif
  15.  
  16.    #ifndef  _LNK_CONV
  17.       #ifdef _M_I386
  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.    /*  <stdio.h> header file                                           */
  34.    /*                                                                  */
  35.    /*  VisualAge for C++ for Windows, Version 3.5                      */
  36.    /*    Licensed Material - Property of IBM                           */
  37.    /*                                                                  */
  38.    /*  5801-ARR and Other Materials                                    */
  39.    /*                                                                  */
  40.    /*  (c) Copyright IBM Corp 1991, 1996. All rights reserved.         */
  41.    /*                                                                  */
  42.    /********************************************************************/
  43.  
  44.    #ifndef __size_t
  45.       #define __size_t
  46.       typedef unsigned int size_t;
  47.    #endif
  48.  
  49.    enum _OPERATIONS { _IOINIT, _IOREAD, _IOWRITE, _IOREPOSITION,
  50.                       _IOFLUSH, _IOUNDEFOP };
  51.  
  52.    #define _MAX_UNGET 2
  53.  
  54.    #ifdef _M_I386
  55.    #pragma pack( 1 )
  56.    typedef struct __file       /* visible portion of the FILE struct */
  57.       {
  58.       unsigned char     *_bufPtr;
  59.       unsigned long int  _count;
  60.       unsigned long int  _userFlags;
  61.       unsigned long int  _bufLen;
  62.       unsigned long int  _ungetCount;
  63.       int                _tempStore;
  64.       unsigned char      _ungetBuf[_MAX_UNGET];
  65.       enum _OPERATIONS   _lastOp;
  66.       char               _filler;
  67.       } FILE;
  68.    #pragma pack( )
  69.    #else
  70.    typedef struct __file       /* visible portion of the FILE struct */
  71.       {
  72.       unsigned char     *_bufPtr;
  73.       unsigned long int  _count;
  74.       unsigned long int  _userFlags;
  75.       unsigned long int  _bufLen;
  76.       unsigned long int  _ungetCount;
  77.       int                _tempStore;
  78.       enum _OPERATIONS   _lastOp;
  79.       unsigned char      _ungetBuf[_MAX_UNGET];
  80.       char               _filler;
  81.       } FILE;
  82.    #endif
  83.  
  84.    typedef struct __fpos_t      /* Definition of file positioning structure */
  85.       {
  86.       long int __fpos_elem[2];
  87.       } fpos_t;
  88.  
  89.    #ifndef NULL
  90.       #if (defined(__EXTENDED__)  || defined( __cplusplus ))
  91.          #define NULL 0
  92.       #else
  93.          #define NULL ((void *)0)
  94.       #endif
  95.    #endif
  96.  
  97.    #define _IOFBF              1   /* Buffer modes */
  98.    #define _IOLBF              2
  99.    #define _IONBF              3
  100.    #define BUFSIZ           4096   /* Default buffer size */
  101.    #define EOF              (-1)
  102.    #define L_tmpnam          260   /* Maximum length of temporary names */
  103.    #define FOPEN_MAX          20   /* Minimum number of open files guaranteed */
  104.    #define FILENAME_MAX      260   /* Maximum file name length */
  105.    #define SEEK_SET            0   /* fseek constants */
  106.    #define SEEK_CUR            1
  107.    #define SEEK_END            2
  108.    #define TMP_MAX        100000   /* Maximum guaranteed unique file names */
  109.  
  110.    #define _IOEOF         0x0001   /* EOF flag mask */
  111.    #define _IOERR         0x0002   /* ERR flag mask */
  112.  
  113. #ifdef _M_I386
  114.    typedef char *__va_list;
  115. #endif
  116.  
  117. #ifdef __THW_PPC__
  118. #ifndef __def_va_list
  119.   #define __def_va_list
  120.     typedef struct {
  121.        char gpr;
  122.        char fpr;
  123.        char reserved[2];
  124.        char *input_arg_area;
  125.        char *reg_save_area;
  126.     } __va_list[1];
  127. #endif
  128. #endif
  129.  
  130.    /* Standard stream pointers. */
  131.  
  132.    #ifdef _WIN32S
  133.       extern FILE *const * _IMPORT _LNK_CONV _stdin( void );
  134.       extern FILE *const * _IMPORT _LNK_CONV _stdout( void );
  135.       extern FILE *const * _IMPORT _LNK_CONV _stderr( void );
  136.  
  137.       #define stdin          (*_stdin())
  138.       #define stdout         (*_stdout())
  139.       #define stderr         (*_stderr())
  140.    #else
  141.       extern FILE * const _IMPORT stdin;
  142.       extern FILE * const _IMPORT stdout;
  143.       extern FILE * const _IMPORT stderr;
  144.  
  145.       #define stdin          stdin
  146.       #define stdout         stdout
  147.       #define stderr         stderr
  148.    #endif
  149.  
  150.    /* Function declarations. */
  151.  
  152. #if defined(_M_I386) || !defined(NO_PROTOTYPE)
  153.    int      _IMPORT _LNK_CONV fprintf( FILE *, const char *, ... );
  154.    int      _IMPORT _LNK_CONV fscanf( FILE *, const char *, ... );
  155.    int      _IMPORT _LNK_CONV printf( const char *, ... );
  156.    int      _IMPORT _LNK_CONV scanf( const char *, ... );
  157.    int      _IMPORT _LNK_CONV sprintf( char *, const char *, ... );
  158.    int      _IMPORT _LNK_CONV sscanf( const char *, const char *, ... );
  159. #endif
  160.    void     _IMPORT _LNK_CONV clearerr( FILE * );
  161.    int      _IMPORT _LNK_CONV fclose( FILE * );
  162.    int      _IMPORT _LNK_CONV feof( FILE * );
  163.    int      _IMPORT _LNK_CONV ferror( FILE * );
  164.    int      _IMPORT _LNK_CONV fflush( FILE * );
  165.    int      _IMPORT _LNK_CONV fgetc( FILE * );
  166.    int      _IMPORT _LNK_CONV fgetpos( FILE *, fpos_t * );
  167.    char   * _IMPORT _LNK_CONV fgets( char *, int, FILE * );
  168.    FILE   * _IMPORT _LNK_CONV fopen( const char *, const char * );
  169.    int      _IMPORT _LNK_CONV fputc( int, FILE * );
  170.    int      _IMPORT _LNK_CONV fputs( const char *, FILE * );
  171.    size_t   _IMPORT _LNK_CONV fread( void *, size_t, size_t, FILE * );
  172.    FILE   * _IMPORT _LNK_CONV freopen( const char *, const char *, FILE * );
  173.    int      _IMPORT _LNK_CONV fseek( FILE *, long int, int );
  174.    int      _IMPORT _LNK_CONV fsetpos( FILE *, const fpos_t * );
  175.    long int _IMPORT _LNK_CONV ftell( FILE * );
  176.    size_t   _IMPORT _LNK_CONV fwrite( const void *, size_t, size_t, FILE * );
  177.    int              _LNK_CONV getc( FILE * );
  178.    int              _LNK_CONV getchar( void );
  179.    char   * _IMPORT _LNK_CONV gets( char * );
  180.    void     _IMPORT _LNK_CONV perror( const char * );
  181.    int              _LNK_CONV putc( int, FILE * );
  182.    int              _LNK_CONV putchar( int );
  183.    int      _IMPORT _LNK_CONV puts( const char * );
  184.    int      _IMPORT _LNK_CONV remove( const char * );
  185.    int      _IMPORT _LNK_CONV rename( const char *, const char * );
  186.    void     _IMPORT _LNK_CONV rewind( FILE * );
  187.    void     _IMPORT _LNK_CONV setbuf( FILE *, char * );
  188.    int      _IMPORT _LNK_CONV setvbuf( FILE *, char *, int, size_t );
  189.    FILE   * _IMPORT _LNK_CONV tmpfile( void );
  190.    char   * _IMPORT _LNK_CONV tmpnam( char * );
  191.    int      _IMPORT _LNK_CONV ungetc( int, FILE * );
  192.    int      _IMPORT _LNK_CONV vfprintf( FILE *, const char *, __va_list );
  193.    int      _IMPORT _LNK_CONV vprintf( const char *, __va_list );
  194.    int      _IMPORT _LNK_CONV vsprintf( char *, const char *, __va_list );
  195.  
  196.    #define __getc(p) ( \
  197.       (  ((p)->_ungetCount==0) && ((p)->_count!=0))? \
  198.          (--(p)->_count, (int)(*(p)->_bufPtr++)) :\
  199.          fgetc((p)) )
  200.  
  201.    #define __putc(c, p) ( \
  202.       ((((p)->_tempStore = (c)) != '\n') && \
  203.       ((p)->_lastOp == _IOWRITE) && ((p)->_count < (p)->_bufLen)) ? \
  204.          (++(p)->_count, *(p)->_bufPtr++ = (p)->_tempStore): \
  205.          fputc((p)->_tempStore,(p)) )
  206.  
  207.    #ifndef __MULTI__
  208.       #ifdef __cplusplus
  209.          inline int getc( FILE * p )        { return __getc( p ); }
  210.          inline int putc( int c, FILE * p ) { return __putc( c, p ); }
  211.       #else
  212.          #define getc( p )    __getc( (p) )
  213.          #define putc( c, p ) __putc( (c), (p) )
  214.       #endif
  215.    #else
  216.       #ifdef __cplusplus
  217.          inline int getc( FILE * p )        { return fgetc( p ); }
  218.          inline int putc( int c, FILE * p ) { return fputc( c, p ); }
  219.       #else
  220.          #define getc( p )  fgetc( (p) )
  221.          #define putc( c, p ) fputc( (c), (p) )
  222.       #endif
  223.    #endif
  224.  
  225.    #ifdef __cplusplus
  226.       inline int getchar( void )   { return getc( stdin ); }
  227.       inline int putchar( int c ) { return putc( c, stdout ); }
  228.    #else
  229.       #define getchar( )   getc( stdin )
  230.       #define putchar( c ) putc( (c), stdout )
  231.    #endif
  232.  
  233.    /* clearerr, feof, and ferror macros - single threaded only */
  234.  
  235.    #ifndef __MULTI__
  236.       #define clearerr( stream ) ( ( void )( (stream)->_userFlags = 0L ) )
  237.       #define feof( stream )     ( ( int  )( (stream)->_userFlags & _IOEOF ) )
  238.       #define ferror( stream )   ( ( int  )( (stream)->_userFlags & _IOERR ) )
  239.    #endif
  240.  
  241.    #if (defined(__EXTENDED__)  || defined( __cplusplus ))
  242.  
  243.       #define _IO_WRITETHRU  0x0004   /* WRITETHRU mask */
  244.  
  245.     #if (defined(__IBMC__) || defined(__IBMCPP__))
  246.       #if defined(_M_I386) || !defined(NO_PROTOTYPE)
  247.        #ifdef __OS2__
  248.        #pragma map( fprintf, "_fprintfieee" )
  249.        #pragma map( printf , "_printfieee"  )
  250.        #pragma map( sprintf, "_sprintfieee" )
  251.        #pragma map( fscanf , "_fscanfieee"  )
  252.        #pragma map( scanf  , "_scanfieee"   )
  253.        #pragma map( sscanf , "_sscanfieee"  )
  254.        #else
  255.        #pragma map( fprintf, "?_fprintfieee" )
  256.        #pragma map( printf , "?_printfieee"  )
  257.        #pragma map( sprintf, "?_sprintfieee" )
  258.        #pragma map( fscanf , "?_fscanfieee"  )
  259.        #pragma map( scanf  , "?_scanfieee"   )
  260.        #pragma map( sscanf , "?_sscanfieee"  )
  261.        #endif
  262.       #endif
  263.  
  264.       #ifdef __OS2__
  265.       #pragma map( vfprintf, "_vfprintfieee" )
  266.       #pragma map( vprintf , "_vprintfieee"  )
  267.       #pragma map( vsprintf, "_vsprintfieee" )
  268.       #else
  269.       #pragma map( vfprintf, "?_vfprintfieee" )
  270.       #pragma map( vprintf , "?_vprintfieee"  )
  271.       #pragma map( vsprintf, "?_vsprintfieee" )
  272.       #endif
  273.     #else
  274.      #ifndef NO_PROTOTYPE
  275.       #pragma Alias( fprintf, "_fprintfieee" )
  276.       #pragma Alias( printf , "_printfieee"  )
  277.       #pragma Alias( sprintf, "_sprintfieee" )
  278.       #pragma Alias( fscanf , "_fscanfieee"  )
  279.       #pragma Alias( scanf  , "_scanfieee"   )
  280.       #pragma Alias( sscanf , "_sscanfieee"  )
  281.      #endif
  282.  
  283.       #pragma Alias( vfprintf, "_vfprintfieee" )
  284.       #pragma Alias( vprintf , "_vprintfieee"  )
  285.       #pragma Alias( vsprintf, "_vsprintfieee" )
  286.     #endif
  287.  
  288.       int _LNK_CONV _fcloseall( void );
  289.       int _LNK_CONV _rmtmp( void );
  290.  
  291.       #define P_tmpdir "\\"
  292.       FILE * _LNK_CONV fdopen( int, const char *);
  293.       int    _LNK_CONV fgetchar( void );
  294.       int    _LNK_CONV fileno( FILE * );
  295.       int    _LNK_CONV flushall( void );
  296.       int    _LNK_CONV fputchar( int );
  297.       char * _LNK_CONV tempnam( char *, char * );
  298.       int    _LNK_CONV unlink( const char * );
  299.  
  300.       FILE * _LNK_CONV _fdopen( int, const char *);
  301.       int    _LNK_CONV _fgetchar( void );
  302.       int    _LNK_CONV _fileno( FILE * );
  303.       int    _LNK_CONV _flushall( void );
  304.       int    _LNK_CONV _fputchar( int );
  305.       char * _LNK_CONV _tempnam( char *, char * );
  306.       int    _LNK_CONV _unlink( const char * );
  307.  
  308.       int    _LNK_CONV _set_crt_msg_handle( int );
  309.  
  310.      #if (defined(__IBMC__) || defined(__IBMCPP__))
  311.       #ifdef __OS2__
  312.       #pragma map( fdopen  , "_fdopen"   )
  313.       #pragma map( fgetchar, "_fgetchar" )
  314.       #pragma map( fileno  , "_fileno"   )
  315.       #pragma map( flushall, "_flushall" )
  316.       #pragma map( fputchar, "_fputchar" )
  317.       #pragma map( tempnam , "_tempnam"  )
  318.       #ifndef __unlink
  319.          #define __unlink
  320.          #pragma map( unlink  , "_unlink"   )
  321.       #endif
  322.       #else
  323.       #pragma map( fdopen  , "?_fdopen"   )
  324.       #pragma map( fgetchar, "?_fgetchar" )
  325.       #pragma map( fileno  , "?_fileno"   )
  326.       #pragma map( flushall, "?_flushall" )
  327.       #pragma map( fputchar, "?_fputchar" )
  328.       #pragma map( tempnam , "?_tempnam"  )
  329.       #ifndef __unlink
  330.          #define __unlink
  331.          #pragma map( unlink  , "?_unlink"   )
  332.       #endif
  333.       #endif
  334.      #else
  335.       #pragma Alias( fdopen  , "_fdopen"   )
  336.       #pragma Alias( fgetchar, "_fgetchar" )
  337.       #pragma Alias( fileno  , "_fileno"   )
  338.       #pragma Alias( flushall, "_flushall" )
  339.       #pragma Alias( fputchar, "_fputchar" )
  340.       #pragma Alias( tempnam , "_tempnam"  )
  341.       #ifndef __unlink
  342.          #define __unlink
  343.          #pragma Alias( unlink  , "_unlink"   )
  344.       #endif
  345.      #endif
  346.  
  347.    #else
  348.  
  349.     #if defined(__IBMC__) || defined(__IBMCPP__)
  350.       #if defined(_M_I386) || !defined(NO_PROTOTYPE)
  351.       #ifdef __OS2__
  352.         #pragma map( fprintf, "_fprintf_ansi" )
  353.         #pragma map( printf , "_printf_ansi"  )
  354.         #pragma map( sprintf, "_sprintf_ansi" )
  355.         #pragma map( fscanf , "_fscanf_ansi"  )
  356.         #pragma map( scanf  , "_scanf_ansi"   )
  357.         #pragma map( sscanf , "_sscanf_ansi"  )
  358.       #else
  359.         #pragma map( fprintf, "?_fprintf_ansi" )
  360.         #pragma map( printf , "?_printf_ansi"  )
  361.         #pragma map( sprintf, "?_sprintf_ansi" )
  362.         #pragma map( fscanf , "?_fscanf_ansi"  )
  363.         #pragma map( scanf  , "?_scanf_ansi"   )
  364.         #pragma map( sscanf , "?_sscanf_ansi"  )
  365.       #endif
  366.       #endif
  367.     #else
  368.       #ifndef NO_PROTOTYPE
  369.         #pragma Alias( fprintf, "_fprintf_ansi" )
  370.         #pragma Alias( printf , "_printf_ansi"  )
  371.         #pragma Alias( sprintf, "_sprintf_ansi" )
  372.         #pragma Alias( fscanf , "_fscanf_ansi"  )
  373.         #pragma Alias( scanf  , "_scanf_ansi"   )
  374.         #pragma Alias( sscanf , "_sscanf_ansi"  )
  375.       #endif
  376.     #endif
  377.  
  378.    #endif
  379.  
  380.    #ifdef __cplusplus
  381.       }
  382.    #endif
  383.  
  384. #endif
  385.  
  386. #if (defined(__IBMC__) || defined(__IBMCPP__))
  387. #pragma info( none )
  388. #ifndef __CHKHDR__
  389.    #pragma info( restore )
  390. #endif
  391. #pragma info( restore )
  392. #endif
  393.  
  394.