1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License, Version 1.0 only
   6  * (the "License").  You may not use this file except in compliance
   7  * with the License.
   8  *
   9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10  * or http://www.opensolaris.org/os/licensing.
  11  * See the License for the specific language governing permissions
  12  * and limitations under the License.
  13  *
  14  * When distributing Covered Code, include this CDDL HEADER in each
  15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16  * If applicable, add the following below this CDDL HEADER, with the
  17  * fields enclosed by brackets "[]" replaced with your own identifying
  18  * information: Portions Copyright [yyyy] [name of copyright owner]
  19  *
  20  * CDDL HEADER END
  21  */
  22 /*      Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T     */
  23 /*        All Rights Reserved   */
  24 
  25 
  26 /*
  27  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
  28  * Use is subject to license terms.
  29  */
  30 
  31 #ifndef _SYS_VARARGS_H
  32 #define _SYS_VARARGS_H
  33 
  34 #pragma ident   "%Z%%M% %I%     %E% SMI"        /* UCB 4.1 83/05/03 */
  35 
  36 /*
  37  * This header defines the Solaris system definitions for variable
  38  * argument lists.  For the most part, it follows the definitions of
  39  * ISO C 1999.  It does not follow the namespace rules for ISO C++
  40  * 1998.  For legacy support, it also defines the pre-standard variable
  41  * argument definitions.
  42  *
  43  * The varargs definitions within this header are defined in terms of
  44  * implementation definitions.  These implementation definitions reside
  45  * in <sys/va_impl.h>.  This organization enables protected use of
  46  * the implementation by other standard headers without introducing
  47  * names into the users' namespace.
  48  */
  49 
  50 #include <sys/va_impl.h>
  51 
  52 #ifdef  __cplusplus
  53 extern "C" {
  54 #endif
  55 
  56 #ifndef _VA_LIST
  57 #define _VA_LIST
  58 typedef __va_list va_list;
  59 #endif
  60 
  61 #if defined(__STDC__)
  62 /*
  63  * When __STDC__ is defined, this file provides stdarg semantics despite
  64  * the name of the file.
  65  */
  66 
  67 #define va_start(list, name)    __va_start(list, name)
  68 #define va_arg(list, type)      __va_arg(list, type)
  69 #define va_copy(to, from)       __va_copy(to, from)
  70 #define va_end(list)            __va_end(list)
  71 
  72 #else   /* ! __STDC__ */
  73 /*
  74  * In the absence of __STDC__, this file provides traditional varargs
  75  * semantics.
  76  */
  77 
  78 #define va_alist                __builtin_va_alist
  79 #define va_dcl                  __va_alist_type va_alist;
  80 #define va_start(list)          __va_start(list, va_alist)
  81 #define va_arg(list, type)      __va_arg(list, type)
  82 #define va_copy(to, from)       __va_copy(to, from)
  83 #define va_end(list)            __va_end(list)
  84 
  85 #endif  /* __STDC__ */
  86 
  87 #ifdef  __cplusplus
  88 }
  89 #endif
  90 
  91 #endif  /* _SYS_VARARGS_H */