xref: /AOO41X/main/sal/inc/systools/win32/snprintf.h (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir #ifndef _SNPRINTF_H
2*cdf0e10cSrcweir #define _SNPRINTF_H
3*cdf0e10cSrcweir 
4*cdf0e10cSrcweir #if     !defined(_WIN32)
5*cdf0e10cSrcweir #error ERROR: Only Win32 target supported!
6*cdf0e10cSrcweir #endif
7*cdf0e10cSrcweir 
8*cdf0e10cSrcweir /* Macros for Unicode/ANSI support like in TCHAR.H */
9*cdf0e10cSrcweir 
10*cdf0e10cSrcweir #ifdef _UNICODE
11*cdf0e10cSrcweir #define sntprintf	snwprintf
12*cdf0e10cSrcweir #define vsntprintf	vsnwprintf
13*cdf0e10cSrcweir #else
14*cdf0e10cSrcweir #define sntprintf	snprintf
15*cdf0e10cSrcweir #define vsntprintf	vsnprintf
16*cdf0e10cSrcweir #endif
17*cdf0e10cSrcweir 
18*cdf0e10cSrcweir /* Define needed types if they are not yet defined */
19*cdf0e10cSrcweir 
20*cdf0e10cSrcweir #if 0
21*cdf0e10cSrcweir #	ifndef _INC_STDARG
22*cdf0e10cSrcweir #	include <stdarg.h>
23*cdf0e10cSrcweir #	endif
24*cdf0e10cSrcweir #else
25*cdf0e10cSrcweir #	ifndef _VA_LIST_DEFINED
26*cdf0e10cSrcweir 	typedef char *  va_list;
27*cdf0e10cSrcweir #	define _VA_LIST_DEFINED
28*cdf0e10cSrcweir #	endif
29*cdf0e10cSrcweir #endif
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir #if 0
32*cdf0e10cSrcweir #	ifndef _INC_WCHAR
33*cdf0e10cSrcweir #	include <wchar.h>
34*cdf0e10cSrcweir #	endif
35*cdf0e10cSrcweir #else
36*cdf0e10cSrcweir #	ifndef _WCHAR_T_DEFINED
37*cdf0e10cSrcweir 	typedef unsigned short wchar_t;
38*cdf0e10cSrcweir #	define _WCHAR_T_DEFINED
39*cdf0e10cSrcweir #	endif
40*cdf0e10cSrcweir #endif
41*cdf0e10cSrcweir 
42*cdf0e10cSrcweir #ifndef _SNPRINTF_DLLIMPORT
43*cdf0e10cSrcweir #define _SNPRINTF_DLLIMPORT	__declspec( dllimport )
44*cdf0e10cSrcweir #endif
45*cdf0e10cSrcweir 
46*cdf0e10cSrcweir #ifdef __cplusplus
47*cdf0e10cSrcweir extern "C" {
48*cdf0e10cSrcweir #endif
49*cdf0e10cSrcweir 
50*cdf0e10cSrcweir 
51*cdf0e10cSrcweir /*	Implementations of snprintf following the ISO/IEC 9899:1999 (ISO C99)
52*cdf0e10cSrcweir 	standard.
53*cdf0e10cSrcweir 	The difference compared to _snprintf is that the buffer always is zero
54*cdf0e10cSrcweir 	terminated (unless count is zero) and the return value is the number of
55*cdf0e10cSrcweir 	characters (not including terminating zero) that would have been written
56*cdf0e10cSrcweir 	even if the buffer wasn't large
57*cdf0e10cSrcweir 	enough to hold the string. */
58*cdf0e10cSrcweir 
59*cdf0e10cSrcweir 
60*cdf0e10cSrcweir 
61*cdf0e10cSrcweir /* UNICODE version */
62*cdf0e10cSrcweir _SNPRINTF_DLLIMPORT int __cdecl snwprintf( wchar_t *buffer, size_t count, const wchar_t *format, ... );
63*cdf0e10cSrcweir 
64*cdf0e10cSrcweir /* SBCS and MBCS version */
65*cdf0e10cSrcweir _SNPRINTF_DLLIMPORT int __cdecl snprintf( char *buffer, size_t count, const char *format, ... );
66*cdf0e10cSrcweir 
67*cdf0e10cSrcweir /* Conflict with STL_port inline implementation */
68*cdf0e10cSrcweir #if 0
69*cdf0e10cSrcweir /* UNICODE version */
70*cdf0e10cSrcweir _SNPRINTF_DLLIMPORT int __cdecl vsnwprintf( wchar_t *buffer, size_t count, const wchar_t *format, va_list ap );
71*cdf0e10cSrcweir 
72*cdf0e10cSrcweir /* SBCS and MBCS version */
73*cdf0e10cSrcweir _SNPRINTF_DLLIMPORT int __cdecl vsnprintf( char *buffer, size_t count, const char *format, va_list ap );
74*cdf0e10cSrcweir #endif
75*cdf0e10cSrcweir 
76*cdf0e10cSrcweir #ifdef __cplusplus
77*cdf0e10cSrcweir }
78*cdf0e10cSrcweir #endif
79*cdf0e10cSrcweir 
80*cdf0e10cSrcweir #endif /* _SNPRINTF_H */
81