home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 January / Chip_1997-01_cd.bin / ms95 / disk22 / dir08 / f012820.re_ / f012820.re
Text File  |  1996-04-02  |  3KB  |  85 lines

  1. /*----------------------------------------------------------------------+
  2. |                                    |
  3. |  Copyright (1992) Bentley Systems, Inc., All rights reserved.        |
  4. |                                    |
  5. |  "MicroStation", "MDL", and "MicroCSL" are trademarks of Bentley    |
  6. |  Systems, Inc.                            |
  7. |                                    |
  8. |  Limited permission is hereby granted to reproduce and modify this    |
  9. |  copyrighted material provided that the resulting code is used only     |
  10. |  in conjunction with Bentley Systems products under the terms of the    |
  11. |  license agreement provided therein, and that this notice is retained    |
  12. |  in its entirety in any such reproduction or modification.        |
  13. |                                    |
  14. +----------------------------------------------------------------------*/
  15. /*----------------------------------------------------------------------+
  16. |                                    |
  17. |   Current Revision:                            |
  18. |   $Workfile:   stdarg.h  $
  19. |   $Revision:   6.5  $  $Date:   11 May 1995 12:46:12  $
  20. |                                    |
  21. +----------------------------------------------------------------------*/
  22. /*----------------------------------------------------------------------+
  23. |                                    |
  24. |   stdarg.h -- MDL variable argument macros                       |
  25. |                                    |
  26. +----------------------------------------------------------------------*/
  27.  
  28. #if !defined (mdl)
  29. #error This file is intended only for MDL.
  30. #endif
  31.  
  32. #if !defined (__stdargH__)
  33. #define __stdargH__
  34.  
  35. #if !defined (__VA_LIST_T)
  36. #   define    __VA_LIST_T
  37. typedef char    *__va_list;
  38. #endif
  39.  
  40. #if !defined (__MAIN_VA_LIST_T)
  41. #   define    __MAIN_VA_LIST_T
  42. typedef __va_list   va_list;
  43. #endif
  44.  
  45. #if !defined (_max)
  46. #define        _max(a,b) ((a)>(b)?(a):(b))
  47. #endif  /*  !defined (_max)  */
  48.  
  49. #define        __PROMOTE(basesize) \
  50.     _max(sizeof(int), ((basesize)+sizeof(int)-1)/sizeof(int)*sizeof(int) )
  51.  
  52. #define        va_start(ap,arg)   (ap=(char *)&arg+sizeof(arg))
  53.  
  54. #if defined (hp700) || defined (clipper) || defined (_ALPHA_) || defined (sgimips) || \
  55.             defined (_PPC_) ||  defined (_MIPS_)
  56. #define        va_arg(pvar,type) \
  57.         (\
  58.         *(type *) \
  59.         (\
  60.             (\
  61.             pvar += \
  62.             (\
  63.             __PROMOTE(sizeof(type)) + \
  64.                  (\
  65.                 ((sizeof (type) == sizeof (double)) && \
  66.                 ((long)pvar & 4)) ? sizeof (int) : 0\
  67.                 )\
  68.             )\
  69.             ) \
  70.         - __PROMOTE(sizeof(type))\
  71.         )  \
  72.         )
  73. #elif defined (pm386) || defined (sparc) || defined (macintosh) || \
  74.      defined (_X86_) || defined (rs6000) || defined(SolarisX86) || \
  75.      defined (os2x86)
  76. #define        va_arg(pvar,type) ( \
  77.        *(type *) ((pvar += __PROMOTE(sizeof(type)) ) - __PROMOTE(sizeof(type)))  )
  78. #else
  79. #error the va_arg macro is not defined for this platform
  80. #endif
  81.  
  82. #define        va_end(pvar)
  83.  
  84. #endif
  85.