mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-28 00:04:17 +00:00 
			
		
		
		
	 521527e0b6
			
		
	
	
		521527e0b6
		
	
	
	
	
		
			
			AppPkg/Applications/Python: Deleted obsolete and incomplete PyMod-2.7.1. Changes to enable compilation using GCC 4.4 on both Windows and Linux hosts. Signed-off-by: daryl.mcdaniel@intel.com Reviewed-by: jaben.carsey@intel.com git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13147 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			147 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|     This header, <stdarg.h>, declares type va_list and defines macros: va_start, va_arg, va_end;
 | |
|     for advancing through a list of arguments whose number and types are not known to the
 | |
|     called function when it is translated.
 | |
| 
 | |
|     A function may be called with a variable number of arguments of varying types.
 | |
|     The rightmost argument plays a special role in the access mechanism, and will
 | |
|     be designated paramN in this and subsequent descriptions.
 | |
| 
 | |
|     The type va_list is a type suitable for holding information needed by the
 | |
|     macros va_start, va_arg, and va_end.  If access to the varying arguments
 | |
|     is desired, the called function shall declare an object (referred to as ap
 | |
|     in these descriptions) having type va_list.  The object ap may be passed as
 | |
|     an argument to another function; if the receiving function invokes the va_arg macro
 | |
|     with parameter ap, the value of ap in the calling function becomes indeterminate
 | |
|     and must be passed to the va_end macro prior to any further reference to ap.
 | |
| 
 | |
|     The va_start and va_arg macros must be implemented as macros, not as actual
 | |
|     functions.  The va_start and va_end macros must be invoked in the
 | |
|     function accepting a varying number of arguments, if access to the varying
 | |
|     arguments is desired.
 | |
| 
 | |
|     Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.<BR>
 | |
|     This program and the accompanying materials are licensed and made available under
 | |
|     the terms and conditions of the BSD License that accompanies this distribution.
 | |
|     The full text of the license may be found at
 | |
|     http://opensource.org/licenses/bsd-license.
 | |
| 
 | |
|     THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | |
|     WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | |
| **/
 | |
| #ifndef _STDARG_H
 | |
| #define _STDARG_H
 | |
| #include  <sys/EfiCdefs.h>
 | |
| 
 | |
| /** @{
 | |
|     The type va_list is a type suitable for holding information needed by the
 | |
|     macros va_start, va_arg, and va_end.
 | |
| 
 | |
|     Depending upon compiler or CPU architecture, different definitions are required.
 | |
| **/
 | |
| #if defined(__GNUC__)
 | |
| typedef __builtin_va_list   va_list;
 | |
| #else
 | |
| #define va_list   VA_LIST
 | |
| #endif
 | |
| /*@}*/
 | |
| 
 | |
| /** @{
 | |
|     The va_start macro must be invoked before any access to the unnamed arguments.
 | |
|     The va_start macro initializes ap for subsequent use by va_arg and va_end.
 | |
| 
 | |
|     Synopsys: void va_start(va_list ap, paramN);
 | |
| 
 | |
|     @param  ap      An object of type va_list that is to be initialized such
 | |
|                     that subsequent successive invocations of va_arg will
 | |
|                     return the values of the parameters following paramN.
 | |
| 
 | |
|     @param  paramN  The parameter paramN is the identifier of the rightmost
 | |
|                     parameter in the variable parameter list in the function
 | |
|                     definition (the one just before the ,...).  If the
 | |
|                     parameter parmN is declared with the register storage
 | |
|                     class, with a function of array type, or with a type that
 | |
|                     is not compatible with the type that results after
 | |
|                     application of the default argument promotions, the
 | |
|                     behavior is undefined.
 | |
| **/
 | |
| #if defined(__GNUC__)
 | |
| #define va_start    __builtin_va_start
 | |
| #else
 | |
| #define va_start    VA_START
 | |
| #endif
 | |
| /*@}*/
 | |
| 
 | |
| /** @{
 | |
|     The va_arg macro expands to an expression that has the type and value of
 | |
|     the next argument in the call.  The parameter ap shall be the same as the
 | |
|     va_list ap initialized by va_start.  Each invocation of va_arg modifies ap
 | |
|     so that the values of successive arguments are returned in turn.  The
 | |
|     parameter type is a type name specified such that the type of a pointer to
 | |
|     an object that has the specified type can be obtained simply by postfixing
 | |
|     a * to type.  If there is no actual next argument, or if type is not
 | |
|     compatible with the type of the actual next argument (as promoted
 | |
|     according to the default argument promotions), the behavior is undefined.
 | |
| 
 | |
|     Synopsys: type va_arg(va_list ap, type);
 | |
| 
 | |
|     @param  ap    An object of type va_list that was initialized by a prior
 | |
|                   invocation of va_start.
 | |
| 
 | |
|     @param  type  A type name specifying the type of the parameter to be retrieved.
 | |
| 
 | |
|     @return       The first invocation of the va_arg macro after that of the
 | |
|                   va_start macro returns the value of the argument after that
 | |
|                   specified by paramN.  Successive invocations return the values
 | |
|                   of the remaining arguments in succession.
 | |
| **/
 | |
| #if defined(__GNUC__)
 | |
| #define va_arg        __builtin_va_arg
 | |
| #else
 | |
| #define va_arg        VA_ARG
 | |
| #endif
 | |
| /*@}*/
 | |
| 
 | |
| /** @{
 | |
|     The va_end macro facillitates a normal return from the function whose
 | |
|     variable argument list was referred to by the expansion of va_start that
 | |
|     initialized the va_list ap.
 | |
| 
 | |
|     Synopsys: void va_end(va_list ap);
 | |
| 
 | |
|     The va_end macro may modify ap so that it is no longer usable (without an
 | |
|     intervening invocation of va_start).  If there is no corresponding
 | |
|     invocation of the va_start macro, or if the va_end macro is not invoked
 | |
|     before the return, the behavior is undefined.
 | |
| 
 | |
|     @param  ap    An object of type va_list, initialized by a prior
 | |
|                   invocation of va_start, that will no longer be referenced.
 | |
| **/
 | |
| #if defined(__GNUC__)
 | |
| #define va_end              __builtin_va_end
 | |
| #else
 | |
| #define va_end              VA_END
 | |
| #endif
 | |
| /*@}*/
 | |
| 
 | |
| /** @{
 | |
|     For BSD compatibility.
 | |
| **/
 | |
| #if defined(__GNUC__)
 | |
| #define va_copy         __builtin_va_copy
 | |
| #else
 | |
| #define va_copy(s,d)      (s) = (d)
 | |
| #endif
 | |
| /*@}*/
 | |
| 
 | |
| /** Provide a generic version of the compiler-dependent __va_copy macro.
 | |
|     Some software, such as Python 2.7.2, relies upon the existence of __va_copy.
 | |
|     If this macro is not defined, it just assigns one va_list item to another.
 | |
|     This breaks for compiler environments that define va_list as an array or structure.
 | |
| **/
 | |
| #ifndef __va_copy
 | |
|   #define __va_copy       va_copy
 | |
| #endif
 | |
| 
 | |
| #endif  /* _STDARG_H */
 |