home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 15 / 15.iso / s / s220 / 2.ddi / STDARG.H < prev    next >
Encoding:
C/C++ Source or Header  |  1988-02-10  |  1.0 KB  |  44 lines

  1. /*                STDARG.H
  2.  
  3. */
  4.  
  5. #if (__TID__ >> 8) == 4         /* Z80/64180 */
  6.  
  7. typedef struct
  8.   {
  9.     char    *parm;
  10.     char    *addr;
  11.     char    argc;
  12.   } va_list[1];
  13.  
  14. extern char *_get_varg (va_list ap, char type, char size);
  15.  
  16. # define va_start(ap,parmN) ((ap[0].addr = ((char *) &parmN) + sizeof(parmN)),\
  17.                              (ap[0].parm = _args$))
  18.  
  19. # define va_arg(ap,mode) *(mode *) _get_varg (ap, _argt$(mode), sizeof(mode))
  20.  
  21. #else        /* Not Z80 */
  22.  
  23. typedef char *va_list[1];
  24.  
  25. #if (__TID__ >> 8) == 1 && ((__TID__ & 15) == 4 || (__TID__ & 15) == 5)
  26.  
  27. /* Single chip 8051 memory model special */
  28.  
  29. # define va_start(ap,parmN) ap[0] = ((char *) &parmN)
  30. # define va_arg(ap,mode) (*(mode *)(ap[0] -= sizeof(mode)))
  31.  
  32. #else        /* Not Z80 or 8051/small */
  33.  
  34. # define va_start(ap,parmN) ap[0] = ((char *) &parmN) + sizeof(parmN)
  35. # define va_arg(ap,mode) *(mode *) ((ap[0] += sizeof(mode)) - sizeof(mode))
  36.  
  37. #endif
  38.  
  39. #endif
  40.  
  41. # define va_end(ap)     /* -g option warns here - OK */
  42.  
  43. #define _STDARG_INCLUDED    /* Needed by "stdio.h" */
  44.