Loading...
include/printf.h Libc-1272.200.26 /dev/null
--- Libc/Libc-1272.200.26/include/printf.h
+++ /dev/null
@@ -1,284 +0,0 @@
-/*-
- * Copyright (c) 2005 Poul-Henning Kamp
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD: src/include/printf.h,v 1.5 2011/03/06 17:45:37 pjd Exp $
- */
-
-#ifndef _PRINTF_H_
-#define _PRINTF_H_
-
-/****************************************************************************
- * This is the header file for extensible printf, a set of APIs that allow
- * adding/modifying conversion specifier(s) for stdio formatted printing.
- * It is based on the GLIBC API documented in:
- *
- *   http://www.gnu.org/software/libc/manual/html_node/Customizing-Printf.html
- *
- * Because that API affects printf behavior process-wide and so is unsafe,
- * we adapt a modified form, based on the concept of printf domains in which
- * changes to conversion specifiers can be made independent of one another
- * and which don't affect the normal printf behavior.  In addition, there
- * is now a set of printf variants that take a printf domain as an argument.
- *
- * See xprintf(5) for more details.
- ****************************************************************************/
-
-#include <stdio.h>
-#include <wchar.h>
-#include <xlocale.h>
-#include <Availability.h>
-
-#ifdef __GNUC__
-#define __XPRINTF_ATTR(x)	__attribute__(x)
-#else /* !__GNUC__ */
-#define __XPRINTF_ATTR(x)	/* nothing */
-#endif /* !__GNUC__ */
-
-/*
- * The API defined by GLIBC allows a renderer to take multiple arguments
- * This is obviously usable for things like (ptr+len) pairs etc.
- * The current limit is to deal with up to __PRINTFMAXARG arguments (any
- * above this limit are ignored).
- */
-#define __PRINTFMAXARG		2
-
-struct printf_info {
-	/* Mac OS X extensions */
-	void		*context;		/* User context pointer */
-	locale_t	loc;			/* Extended locale */
-	wchar_t		vsep;			/* Vector separator char */
-						/* one of ,:;_ flag or X by default */
-
-	/* GLIBC compatible */
-	int		prec;			/* precision */
-	int		width;			/* Width */
-	wchar_t		spec;			/* Format letter */
-	wchar_t		pad;			/* Padding char */
-						/* 0 if 0 flag set, otherwise space */
-
-	/* FreeBSD extensions */
-	wchar_t		signchar;		/* Sign char */
-
-	/* GLIBC compatible flags */
-	unsigned	is_long_double	:1;	/* L or ll flag */
-	unsigned	is_char		:1;	/* hh flag */
-	unsigned	is_short	:1;	/* h flag */
-	unsigned	is_long		:1;	/* l flag */
-	unsigned	alt		:1;	/* # flag */
-	unsigned	space		:1;	/* Space flag */
-	unsigned	left		:1;	/* - flag */
-	unsigned	showsign	:1;	/* + flag */
-	unsigned	group		:1;	/* ' flag */
-	unsigned	extra		:1;	/* For special use (currently unused) */
-	unsigned	wide		:1;	/* Nonzero for wide character streams (currently unused) */
-
-	/* FreeBSD flags */
-	unsigned	is_quad		:1;	/* q flag */
-	unsigned	is_intmax	:1;	/* j flag */
-	unsigned	is_ptrdiff	:1;	/* t flag */
-	unsigned	is_size		:1;	/* z flag */
-
-	/* Mac OS X flags */
-	unsigned	is_vec		:1;	/* v flag */
-
-	/* private */
-	int		sofar;
-	unsigned	get_width;
-	unsigned	get_prec;
-	const char	*begin;
-	const char	*end;
-	void 		*arg[__PRINTFMAXARG];
-};
-
-enum {
-	PA_INT		= (1 << 0),	/* int */
-	PA_CHAR		= (1 << 1),	/* int, cast to char */
-	PA_WCHAR	= (1 << 2),	/* wide char */
-	PA_STRING	= (1 << 3),	/* const char * (with '\0') */
-	PA_WSTRING	= (1 << 4),	/* const wchar_t * */
-	PA_POINTER	= (1 << 5),	/* void * */
-	PA_FLOAT	= (1 << 6),	/* float (Defined but unused; best to avoid.) */
-	PA_DOUBLE	= (1 << 7), 	/* double */
-	PA_VECTOR	= (1 << 8), 	/* vector */
-};
-
-#define	PA_FLAG_MASK		0xff0000
-#define	PA_FLAG_LONG_LONG	(1 << 16)
-#define	PA_FLAG_LONG		(1 << 17)
-#define	PA_FLAG_SHORT		(1 << 18)
-#define	PA_FLAG_PTR		(1 << 19)
-#define	PA_FLAG_QUAD		(1 << 20)
-#define	PA_FLAG_INTMAX		(1 << 21)
-#define	PA_FLAG_SIZE		(1 << 22)
-#define	PA_FLAG_PTRDIFF		(1 << 23)
-#define	PA_FLAG_LONG_DOUBLE	PA_FLAG_LONG_LONG
-
-/************************ Basic Extensible Printf APIs ************************/
-
-typedef int printf_arginfo_function(const struct printf_info *__info,
-	     size_t __n, int *__argtypes);
-typedef int printf_function(FILE *__stream,
-	     const struct printf_info *__info, const void *const *__args);
-
-/*
- * We don't support the GLIBC register_printf_function() or FreeBSD
- * register_printf_render_std(), because they affect printf globally
- * and are unsafe.
- */
-
-/*************** Extensible Printf Domains APIs ****************/
-
-struct _printf_domain; /* forward reference */
-typedef struct _printf_domain *printf_domain_t;
-
-__BEGIN_DECLS
-
-printf_domain_t	copy_printf_domain(printf_domain_t __domain)
-		 __XPRINTF_ATTR((__nonnull__(1)))
-		 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-void		free_printf_domain(printf_domain_t __domain)
-		 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-printf_domain_t	new_printf_domain(void)
-		 __XPRINTF_ATTR((__malloc__))
-		 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	register_printf_domain_function(printf_domain_t __domain,
-	 int __spec, printf_function *__render,
-	 printf_arginfo_function *__arginfo, void *__context)
-	 __XPRINTF_ATTR((__nonnull__(1)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	register_printf_domain_render_std(printf_domain_t __domain,
-	 const char *__specs)
-	 __XPRINTF_ATTR((__nonnull__(1)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-
-/**** All-in-one extensible printf variants ****/
-int	asxprintf(char ** __restrict __ret,
-	 printf_domain_t __restrict __domain, locale_t __restrict __loc,
-	 const char * __restrict __format, ...)
-	 __XPRINTF_ATTR((__nonnull__(1, 2, 4)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	dxprintf(int __fd, printf_domain_t __restrict __domain,
-	 locale_t __restrict __loc, const char * __restrict __format, ...)
-	 __XPRINTF_ATTR((__nonnull__(2, 4)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	fxprintf(FILE * __restrict __stream,
-	 printf_domain_t __restrict __domain, locale_t __restrict __loc,
-	 const char * __restrict __format, ...)
-	 __XPRINTF_ATTR((__nonnull__(1, 2, 4)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	sxprintf(char * __restrict __str, size_t __size,
-	 printf_domain_t __restrict __domain, locale_t __restrict __loc,
-	 const char * __restrict __format, ...)
-	 __XPRINTF_ATTR((__nonnull__(1, 3, 5)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	xprintf(printf_domain_t __restrict __domain,
-	 locale_t __restrict __loc, const char * __restrict __format, ...)
-	 __XPRINTF_ATTR((__nonnull__(1, 3)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-
-int	vasxprintf(char ** __restrict __ret,
-	 printf_domain_t __restrict __domain, locale_t __restrict __loc,
-	 const char * __restrict __format, va_list __ap)
-	 __XPRINTF_ATTR((__nonnull__(1, 2, 4)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	vdxprintf(int __fd, printf_domain_t __restrict __domain,
-	 locale_t __restrict __loc, const char * __restrict __format,
-	 va_list __ap)
-	 __XPRINTF_ATTR((__nonnull__(2, 4)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	vfxprintf(FILE * __restrict __stream,
-	 printf_domain_t __restrict __domain, locale_t __restrict __loc,
-	 const char * __restrict __format, va_list __ap)
-	 __XPRINTF_ATTR((__nonnull__(1, 2, 4)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	vsxprintf(char * __restrict __str, size_t __size,
-	 printf_domain_t __restrict __domain, locale_t __restrict __loc,
-	 const char * __restrict __format, va_list __ap)
-	 __XPRINTF_ATTR((__nonnull__(1, 3, 5)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	vxprintf(printf_domain_t __restrict __domain,
-	 locale_t __restrict __loc, const char * __restrict __format,
-	 va_list __ap)
-	 __XPRINTF_ATTR((__nonnull__(1, 3)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-
-__END_DECLS
-
-/******** Extensible Printf Compilation/Execution APIs *********/
-struct _printf_compiled; /* forward reference */
-typedef struct _printf_compiled *printf_comp_t;
-
-__BEGIN_DECLS
-
-void		free_printf_comp(printf_comp_t __pc)
-		 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-printf_comp_t	new_printf_comp(printf_domain_t __restrict __domain,
-		 locale_t __restrict __loc, const char * __restrict __fmt)
-		 __XPRINTF_ATTR((__nonnull__(1, 3)))
-		 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-
-/**** Extensible printf execution ****/
-int	asxprintf_exec(char ** __restrict __ret,
-	 printf_comp_t __restrict __pc, ...)
-	 __XPRINTF_ATTR((__nonnull__(1, 2)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	dxprintf_exec(int __fd, printf_comp_t __restrict __pc, ...)
-	 __XPRINTF_ATTR((__nonnull__(2)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	fxprintf_exec(FILE * __restrict __stream,
-	 printf_comp_t __restrict __pc, ...)
-	 __XPRINTF_ATTR((__nonnull__(1, 2)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	sxprintf_exec(char * __restrict __str, size_t __size,
-	 printf_comp_t __restrict __pc, ...)
-	 __XPRINTF_ATTR((__nonnull__(1, 3)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	xprintf_exec(printf_comp_t __restrict __pc, ...)
-	 __XPRINTF_ATTR((__nonnull__(1)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-
-int	vasxprintf_exec(char ** __restrict __ret,
-	 printf_comp_t __restrict __pc, va_list __ap)
-	 __XPRINTF_ATTR((__nonnull__(1, 2)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	vdxprintf_exec(int __fd, printf_comp_t __restrict __pc,
-	 va_list __ap)
-	 __XPRINTF_ATTR((__nonnull__(2)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	vfxprintf_exec(FILE * __restrict __stream,
-	 printf_comp_t __restrict __pc, va_list __ap)
-	 __XPRINTF_ATTR((__nonnull__(1, 2)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	vsxprintf_exec(char * __restrict __str, size_t __size,
-	 printf_comp_t __restrict __pc, va_list __ap)
-	 __XPRINTF_ATTR((__nonnull__(1, 3)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-int	vxprintf_exec(printf_comp_t __restrict __pc, va_list __ap)
-	 __XPRINTF_ATTR((__nonnull__(1)))
-	 __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);
-
-__END_DECLS
-
-#endif /* !_PRINTF_H */