| #ifndef PFORMAT_H |
| /* |
| * pformat.h |
| * |
| * $Id: pformat.h,v 1.1 2008/07/28 23:24:20 keithmarshall Exp $ |
| * |
| * A private header, defining the `pformat' API; it is to be included |
| * in each compilation unit implementing any of the `printf' family of |
| * functions, but serves no useful purpose elsewhere. |
| * |
| * Written by Keith Marshall <keithmarshall@users.sourceforge.net> |
| * |
| * This is free software. You may redistribute and/or modify it as you |
| * see fit, without restriction of copyright. |
| * |
| * This software is provided "as is", in the hope that it may be useful, |
| * but WITHOUT WARRANTY OF ANY KIND, not even any implied warranty of |
| * MERCHANTABILITY, nor of FITNESS FOR ANY PARTICULAR PURPOSE. At no |
| * time will the author accept any form of liability for any damages, |
| * however caused, resulting from the use of this software. |
| */ |
| #define PFORMAT_H |
| |
| /* The following macros reproduce definitions from _mingw.h, |
| * so that compilation will not choke, if using any compiler |
| * other than the MinGW implementation of GCC. |
| */ |
| #ifndef __cdecl |
| # ifdef __GNUC__ |
| # define __cdecl __attribute__((__cdecl__)) |
| # else |
| # define __cdecl |
| # endif |
| #endif |
| |
| #ifndef __MINGW_GNUC_PREREQ |
| # if defined __GNUC__ && defined __GNUC_MINOR__ |
| # define __MINGW_GNUC_PREREQ( major, minor )\ |
| (__GNUC__ > (major) || (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor))) |
| # else |
| # define __MINGW_GNUC_PREREQ( major, minor ) |
| # endif |
| #endif |
| |
| #ifndef __MINGW_NOTHROW |
| # if __MINGW_GNUC_PREREQ( 3, 3 ) |
| # define __MINGW_NOTHROW __attribute__((__nothrow__)) |
| # else |
| # define __MINGW_NOTHROW |
| # endif |
| #endif |
| |
| #ifdef __BUILD_WIDEAPI |
| #define APICHAR wchar_t |
| #else |
| #define APICHAR char |
| #endif |
| |
| /* The following are the declarations specific to the `pformat' API... |
| */ |
| #define PFORMAT_TO_FILE 0x2000 |
| #define PFORMAT_NOLIMIT 0x4000 |
| |
| #if defined(__MINGW32__) || defined(__MINGW64__) |
| /* |
| * Map MinGW specific function names, for use in place of the generic |
| * implementation defined equivalent function names. |
| */ |
| #ifdef __BUILD_WIDEAPI |
| # define __pformat __mingw_wpformat |
| #define __fputc(X,STR) fputwc((wchar_t) (X), (STR)) |
| |
| # define __printf __mingw_wprintf |
| # define __fprintf __mingw_fwprintf |
| # define __sprintf __mingw_swprintf |
| # define __snprintf __mingw_snwprintf |
| |
| # define __vprintf __mingw_vwprintf |
| # define __vfprintf __mingw_vfwprintf |
| # define __vsprintf __mingw_vswprintf |
| # define __vsnprintf __mingw_vsnwprintf |
| #else |
| # define __pformat __mingw_pformat |
| #define __fputc(X,STR) fputc((X), (STR)) |
| |
| # define __printf __mingw_printf |
| # define __fprintf __mingw_fprintf |
| # define __sprintf __mingw_sprintf |
| # define __snprintf __mingw_snprintf |
| |
| # define __vprintf __mingw_vprintf |
| # define __vfprintf __mingw_vfprintf |
| # define __vsprintf __mingw_vsprintf |
| # define __vsnprintf __mingw_vsnprintf |
| #endif /* __BUILD_WIDEAPI */ |
| #endif |
| |
| int __cdecl __pformat(int, void *, int, const APICHAR *, va_list) __MINGW_NOTHROW; |
| #endif /* !defined PFORMAT_H */ |