Blame winpr/libwinpr/utils/trio/trio.h

Packit Service fa4841
/*************************************************************************
Packit Service fa4841
 *
Packit Service fa4841
 * $Id: trio.h,v 1.20 2010/09/12 11:08:08 breese Exp $
Packit Service fa4841
 *
Packit Service fa4841
 * Copyright (C) 1998 Bjorn Reese and Daniel Stenberg.
Packit Service fa4841
 *
Packit Service fa4841
 * Permission to use, copy, modify, and distribute this software for any
Packit Service fa4841
 * purpose with or without fee is hereby granted, provided that the above
Packit Service fa4841
 * copyright notice and this permission notice appear in all copies.
Packit Service fa4841
 *
Packit Service fa4841
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
Packit Service fa4841
 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
Packit Service fa4841
 * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
Packit Service fa4841
 * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
Packit Service fa4841
 *
Packit Service fa4841
 *************************************************************************
Packit Service fa4841
 *
Packit Service fa4841
 * http://ctrio.sourceforge.net/
Packit Service fa4841
 *
Packit Service fa4841
 ************************************************************************/
Packit Service fa4841
Packit Service fa4841
#ifndef TRIO_TRIO_H
Packit Service fa4841
#define TRIO_TRIO_H
Packit Service fa4841
Packit Service fa4841
#if !defined(WITHOUT_TRIO)
Packit Service fa4841
Packit Service fa4841
/*
Packit Service fa4841
 * Use autoconf defines if present. Packages using trio must define
Packit Service fa4841
 * HAVE_CONFIG_H as a compiler option themselves.
Packit Service fa4841
 */
Packit Service fa4841
#if defined(HAVE_CONFIG_H)
Packit Service b1ea74
#include <config.h>
Packit Service fa4841
#endif
Packit Service fa4841
Packit Service fa4841
#include "triop.h"
Packit Service fa4841
Packit Service fa4841
#include <stdio.h>
Packit Service fa4841
Packit Service fa4841
#ifdef __cplusplus
Packit Service b1ea74
extern "C"
Packit Service b1ea74
{
Packit Service fa4841
#endif
Packit Service fa4841
Packit Service b1ea74
	/*
Packit Service b1ea74
	 * Error codes.
Packit Service b1ea74
	 *
Packit Service b1ea74
	 * Remember to add a textual description to trio_strerror.
Packit Service b1ea74
	 */
Packit Service b1ea74
	enum
Packit Service b1ea74
	{
Packit Service b1ea74
		TRIO_EOF = 1,
Packit Service b1ea74
		TRIO_EINVAL = 2,
Packit Service b1ea74
		TRIO_ETOOMANY = 3,
Packit Service b1ea74
		TRIO_EDBLREF = 4,
Packit Service b1ea74
		TRIO_EGAP = 5,
Packit Service b1ea74
		TRIO_ENOMEM = 6,
Packit Service b1ea74
		TRIO_ERANGE = 7,
Packit Service b1ea74
		TRIO_ERRNO = 8,
Packit Service b1ea74
		TRIO_ECUSTOM = 9
Packit Service b1ea74
	};
Packit Service fa4841
Packit Service fa4841
/* Error macros */
Packit Service fa4841
#define TRIO_ERROR_CODE(x) ((-(x)) & 0x00FF)
Packit Service fa4841
#define TRIO_ERROR_POSITION(x) ((-(x)) >> 8)
Packit Service fa4841
#define TRIO_ERROR_NAME(x) trio_strerror(x)
Packit Service fa4841
Packit Service b1ea74
	/* Argument function types */
Packit Service b1ea74
	enum
Packit Service b1ea74
	{
Packit Service b1ea74
		TRIO_TYPE_POINTER = 1,
Packit Service b1ea74
		TRIO_TYPE_CHAR = 2,
Packit Service b1ea74
		TRIO_TYPE_SHORT = 3,
Packit Service b1ea74
		TRIO_TYPE_INT = 4,
Packit Service b1ea74
		TRIO_TYPE_LONG = 5,
Packit Service b1ea74
		TRIO_TYPE_ULONGLONG = 6,
Packit Service b1ea74
		TRIO_TYPE_UINTMAX = 7,
Packit Service b1ea74
		TRIO_TYPE_PTRDIFF = 8,
Packit Service b1ea74
		TRIO_TYPE_SIZE = 9,
Packit Service b1ea74
		TRIO_TYPE_PCHAR = 10,
Packit Service b1ea74
		TRIO_TYPE_PWCHAR = 11,
Packit Service b1ea74
		TRIO_TYPE_FLOAT = 12,
Packit Service b1ea74
		TRIO_TYPE_DOUBLE = 13,
Packit Service b1ea74
		TRIO_TYPE_LONGDOUBLE = 14
Packit Service b1ea74
	};
Packit Service fa4841
Packit Service b1ea74
	typedef trio_pointer_t(*trio_argfunc_t) TRIO_PROTO((trio_pointer_t, int, int));
Packit Service b1ea74
	typedef int(*trio_outstream_t) TRIO_PROTO((trio_pointer_t, int));
Packit Service b1ea74
	typedef int(*trio_instream_t) TRIO_PROTO((trio_pointer_t));
Packit Service fa4841
Packit Service b1ea74
	TRIO_CONST char* trio_strerror TRIO_PROTO((int));
Packit Service fa4841
Packit Service b1ea74
	/*************************************************************************
Packit Service b1ea74
	 * Print Functions
Packit Service b1ea74
	 */
Packit Service fa4841
Packit Service b1ea74
	int trio_printf TRIO_PROTO((TRIO_CONST char* format, ...));
Packit Service b1ea74
	int trio_vprintf TRIO_PROTO((TRIO_CONST char* format, va_list args));
Packit Service b1ea74
	int trio_printfv TRIO_PROTO((TRIO_CONST char* format, trio_pointer_t* args));
Packit Service fa4841
Packit Service b1ea74
	int trio_fprintf TRIO_PROTO((FILE * file, TRIO_CONST char* format, ...));
Packit Service b1ea74
	int trio_vfprintf TRIO_PROTO((FILE * file, TRIO_CONST char* format, va_list args));
Packit Service b1ea74
	int trio_fprintfv TRIO_PROTO((FILE * file, TRIO_CONST char* format, trio_pointer_t* args));
Packit Service fa4841
Packit Service b1ea74
	int trio_dprintf TRIO_PROTO((int fd, TRIO_CONST char* format, ...));
Packit Service b1ea74
	int trio_vdprintf TRIO_PROTO((int fd, TRIO_CONST char* format, va_list args));
Packit Service b1ea74
	int trio_dprintfv TRIO_PROTO((int fd, TRIO_CONST char* format, trio_pointer_t* args));
Packit Service fa4841
Packit Service b1ea74
	int trio_cprintf TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
Packit Service b1ea74
	                             TRIO_CONST char* format, ...));
Packit Service b1ea74
	int trio_vcprintf TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
Packit Service b1ea74
	                              TRIO_CONST char* format, va_list args));
Packit Service b1ea74
	int trio_cprintfv TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
Packit Service b1ea74
	                              TRIO_CONST char* format, trio_pointer_t* args));
Packit Service b1ea74
	int trio_cprintff TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
Packit Service b1ea74
	                              TRIO_CONST char* format, trio_argfunc_t func,
Packit Service b1ea74
	                              trio_pointer_t context));
Packit Service fa4841
Packit Service b1ea74
	int trio_sprintf TRIO_PROTO((char* buffer, TRIO_CONST char* format, ...));
Packit Service b1ea74
	int trio_vsprintf TRIO_PROTO((char* buffer, TRIO_CONST char* format, va_list args));
Packit Service b1ea74
	int trio_sprintfv TRIO_PROTO((char* buffer, TRIO_CONST char* format, trio_pointer_t* args));
Packit Service fa4841
Packit Service b1ea74
	int trio_snprintf TRIO_PROTO((char* buffer, size_t max, TRIO_CONST char* format, ...));
Packit Service b1ea74
	int trio_vsnprintf TRIO_PROTO((char* buffer, size_t bufferSize, TRIO_CONST char* format,
Packit Service b1ea74
	                               va_list args));
Packit Service b1ea74
	int trio_snprintfv TRIO_PROTO((char* buffer, size_t bufferSize, TRIO_CONST char* format,
Packit Service b1ea74
	                               trio_pointer_t* args));
Packit Service fa4841
Packit Service b1ea74
	int trio_snprintfcat TRIO_PROTO((char* buffer, size_t max, TRIO_CONST char* format, ...));
Packit Service b1ea74
	int trio_vsnprintfcat TRIO_PROTO((char* buffer, size_t bufferSize, TRIO_CONST char* format,
Packit Service b1ea74
	                                  va_list args));
Packit Service fa4841
Packit Service fa4841
#if defined(TRIO_DEPRECATED)
Packit Service b1ea74
	char* trio_aprintf TRIO_PROTO((TRIO_CONST char* format, ...));
Packit Service b1ea74
	char* trio_vaprintf TRIO_PROTO((TRIO_CONST char* format, va_list args));
Packit Service fa4841
#endif
Packit Service fa4841
Packit Service b1ea74
	int trio_asprintf TRIO_PROTO((char** ret, TRIO_CONST char* format, ...));
Packit Service b1ea74
	int trio_vasprintf TRIO_PROTO((char** ret, TRIO_CONST char* format, va_list args));
Packit Service b1ea74
	int trio_asprintfv TRIO_PROTO((char** result, TRIO_CONST char* format, trio_pointer_t* args));
Packit Service fa4841
Packit Service b1ea74
	/*************************************************************************
Packit Service b1ea74
	 * Scan Functions
Packit Service b1ea74
	 */
Packit Service b1ea74
	int trio_scanf TRIO_PROTO((TRIO_CONST char* format, ...));
Packit Service b1ea74
	int trio_vscanf TRIO_PROTO((TRIO_CONST char* format, va_list args));
Packit Service b1ea74
	int trio_scanfv TRIO_PROTO((TRIO_CONST char* format, void** args));
Packit Service fa4841
Packit Service b1ea74
	int trio_fscanf TRIO_PROTO((FILE * file, TRIO_CONST char* format, ...));
Packit Service b1ea74
	int trio_vfscanf TRIO_PROTO((FILE * file, TRIO_CONST char* format, va_list args));
Packit Service b1ea74
	int trio_fscanfv TRIO_PROTO((FILE * file, TRIO_CONST char* format, void** args));
Packit Service fa4841
Packit Service b1ea74
	int trio_dscanf TRIO_PROTO((int fd, TRIO_CONST char* format, ...));
Packit Service b1ea74
	int trio_vdscanf TRIO_PROTO((int fd, TRIO_CONST char* format, va_list args));
Packit Service b1ea74
	int trio_dscanfv TRIO_PROTO((int fd, TRIO_CONST char* format, void** args));
Packit Service fa4841
Packit Service b1ea74
	int trio_cscanf TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
Packit Service b1ea74
	                            TRIO_CONST char* format, ...));
Packit Service b1ea74
	int trio_vcscanf TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
Packit Service b1ea74
	                             TRIO_CONST char* format, va_list args));
Packit Service b1ea74
	int trio_cscanfv TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
Packit Service b1ea74
	                             TRIO_CONST char* format, void** args));
Packit Service b1ea74
	int trio_cscanff TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
Packit Service b1ea74
	                             TRIO_CONST char* format, trio_argfunc_t func,
Packit Service b1ea74
	                             trio_pointer_t context));
Packit Service fa4841
Packit Service b1ea74
	int trio_sscanf TRIO_PROTO((TRIO_CONST char* buffer, TRIO_CONST char* format, ...));
Packit Service b1ea74
	int trio_vsscanf TRIO_PROTO((TRIO_CONST char* buffer, TRIO_CONST char* format, va_list args));
Packit Service b1ea74
	int trio_sscanfv TRIO_PROTO((TRIO_CONST char* buffer, TRIO_CONST char* format, void** args));
Packit Service fa4841
Packit Service b1ea74
	/*************************************************************************
Packit Service b1ea74
	 * Locale Functions
Packit Service b1ea74
	 */
Packit Service b1ea74
	void trio_locale_set_decimal_point TRIO_PROTO((char* decimalPoint));
Packit Service b1ea74
	void trio_locale_set_thousand_separator TRIO_PROTO((char* thousandSeparator));
Packit Service b1ea74
	void trio_locale_set_grouping TRIO_PROTO((char* grouping));
Packit Service fa4841
Packit Service fa4841
/*************************************************************************
Packit Service fa4841
 * Renaming
Packit Service fa4841
 */
Packit Service fa4841
#ifdef TRIO_REPLACE_STDIO
Packit Service fa4841
/* Replace the <stdio.h> functions */
Packit Service fa4841
#ifndef HAVE_PRINTF
Packit Service b1ea74
#undef printf
Packit Service b1ea74
#define printf trio_printf
Packit Service fa4841
#endif
Packit Service fa4841
#ifndef HAVE_VPRINTF
Packit Service b1ea74
#undef vprintf
Packit Service b1ea74
#define vprintf trio_vprintf
Packit Service fa4841
#endif
Packit Service fa4841
#ifndef HAVE_FPRINTF
Packit Service b1ea74
#undef fprintf
Packit Service b1ea74
#define fprintf trio_fprintf
Packit Service fa4841
#endif
Packit Service fa4841
#ifndef HAVE_VFPRINTF
Packit Service b1ea74
#undef vfprintf
Packit Service b1ea74
#define vfprintf trio_vfprintf
Packit Service fa4841
#endif
Packit Service fa4841
#ifndef HAVE_SPRINTF
Packit Service b1ea74
#undef sprintf
Packit Service b1ea74
#define sprintf trio_sprintf
Packit Service fa4841
#endif
Packit Service fa4841
#ifndef HAVE_VSPRINTF
Packit Service b1ea74
#undef vsprintf
Packit Service b1ea74
#define vsprintf trio_vsprintf
Packit Service fa4841
#endif
Packit Service fa4841
#ifndef HAVE_SNPRINTF
Packit Service b1ea74
#undef snprintf
Packit Service b1ea74
#define snprintf trio_snprintf
Packit Service fa4841
#endif
Packit Service fa4841
#ifndef HAVE_VSNPRINTF
Packit Service b1ea74
#undef vsnprintf
Packit Service b1ea74
#define vsnprintf trio_vsnprintf
Packit Service fa4841
#endif
Packit Service fa4841
#ifndef HAVE_SCANF
Packit Service b1ea74
#undef scanf
Packit Service b1ea74
#define scanf trio_scanf
Packit Service fa4841
#endif
Packit Service fa4841
#ifndef HAVE_VSCANF
Packit Service b1ea74
#undef vscanf
Packit Service b1ea74
#define vscanf trio_vscanf
Packit Service fa4841
#endif
Packit Service fa4841
#ifndef HAVE_FSCANF
Packit Service b1ea74
#undef fscanf
Packit Service b1ea74
#define fscanf trio_fscanf
Packit Service fa4841
#endif
Packit Service fa4841
#ifndef HAVE_VFSCANF
Packit Service b1ea74
#undef vfscanf
Packit Service b1ea74
#define vfscanf trio_vfscanf
Packit Service fa4841
#endif
Packit Service fa4841
#ifndef HAVE_SSCANF
Packit Service b1ea74
#undef sscanf
Packit Service b1ea74
#define sscanf trio_sscanf
Packit Service fa4841
#endif
Packit Service fa4841
#ifndef HAVE_VSSCANF
Packit Service b1ea74
#undef vsscanf
Packit Service b1ea74
#define vsscanf trio_vsscanf
Packit Service fa4841
#endif
Packit Service fa4841
/* These aren't stdio functions, but we make them look similar */
Packit Service fa4841
#undef dprintf
Packit Service fa4841
#define dprintf trio_dprintf
Packit Service fa4841
#undef vdprintf
Packit Service fa4841
#define vdprintf trio_vdprintf
Packit Service fa4841
#undef aprintf
Packit Service fa4841
#define aprintf trio_aprintf
Packit Service fa4841
#undef vaprintf
Packit Service fa4841
#define vaprintf trio_vaprintf
Packit Service fa4841
#undef asprintf
Packit Service fa4841
#define asprintf trio_asprintf
Packit Service fa4841
#undef vasprintf
Packit Service fa4841
#define vasprintf trio_vasprintf
Packit Service fa4841
#undef dscanf
Packit Service fa4841
#define dscanf trio_dscanf
Packit Service fa4841
#undef vdscanf
Packit Service fa4841
#define vdscanf trio_vdscanf
Packit Service fa4841
#endif
Packit Service fa4841
Packit Service fa4841
#ifdef __cplusplus
Packit Service fa4841
} /* extern "C" */
Packit Service fa4841
#endif
Packit Service fa4841
Packit Service fa4841
#endif /* WITHOUT_TRIO */
Packit Service fa4841
Packit Service fa4841
#endif /* TRIO_TRIO_H */