home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / header45.zip / libc / stdarg.h < prev    next >
Text File  |  1999-03-15  |  2KB  |  85 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 __stdarg_h
  10.    #define __stdarg_h
  11.  
  12.    #ifdef __cplusplus
  13.       extern "C" {
  14.    #endif
  15.  
  16.    /********************************************************************/
  17.    /*  <stdarg.h> header file                                          */
  18.    /*                                                                  */
  19.    /*  (C) Copyright IBM Corp. 1991, 1995.                             */
  20.    /*  - Licensed Material - Program-Property of IBM                   */
  21.    /*  - All rights reserved                                           */
  22.    /*                                                                  */
  23.    /********************************************************************/
  24.  
  25.    #if __THW_PPC__
  26.  
  27.       /* WPOS ABI compliant definition */
  28.       #if __IBMC__ || __IBMCPP__
  29.  
  30.          #ifndef __def_va_list
  31.          #define __def_va_list
  32.          typedef struct __va_list_struct {
  33.             char gpr;
  34.             char fpr;
  35.             char reserved[2];
  36.             char *input_arg_area;
  37.             char *reg_save_area;
  38.          } __va_list[1];
  39.          #endif
  40.  
  41.          extern void _Builtin __vastart(void *);
  42.          extern void* __va_arg(void*, int);
  43.  
  44.          #define __va_start(ap,fmt) __vastart(&ap)
  45.          #define __va_arg(ap,t)  (*((t*)__va_arg(ap,__builtin_va_arg_incr((t *)0))))
  46.          #define __va_end(ap)
  47.  
  48.          #define va_start __va_start
  49.          #define va_arg   __va_arg
  50.          #define va_end   __va_end
  51.  
  52.          typedef __va_list va_list;
  53.       #endif
  54.  
  55.    #else /* __THW_INTEL__ */
  56.  
  57.       typedef char *va_list;
  58.  
  59.       #define __nextword(base)   (((unsigned)(sizeof(base))+3U)&~(3U))
  60.  
  61.       #ifdef __cplusplus
  62.          #define va_start(ap, last) ap = __vastart(last);
  63.       #else
  64.          #define va_start(ap, last) ap = ((va_list)&last) + __nextword(last)
  65.       #endif
  66.       #define va_arg(ap, type) ((type *) ((ap += (int) __nextword(type)) - __nextword(type)))[0]
  67.       #define va_end(ap)       ap = 0
  68.    #endif
  69.  
  70.    #ifdef __cplusplus
  71.       }
  72.    #endif
  73.  
  74. #endif
  75.  
  76. #if __IBMC__ || __IBMCPP__
  77. #pragma info( none )
  78. #ifndef __CHKHDR__
  79.    #pragma info( restore )
  80. #endif
  81. #pragma info( restore )
  82. #endif
  83.  
  84. 
  85.