#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 * * 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 */