summaryrefslogtreecommitdiff
path: root/src/pal/src/include/pal/printfcpp.hpp
blob: 0a728c9fd7eb092c497335bbac8318072c05ca7f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

/*++



Module Name:

    pal/printfcpp.hpp

Abstract:
    Declarations for suspension safe memory allocation functions



--*/

#ifndef _PRINTFCPP_HPP
#define _PRINTFCPP_HPP

#ifdef __cplusplus
#include "pal/threadinfo.hpp"
#endif

#include <stdarg.h>

#ifdef __cplusplus
typedef char16_t wchar_16; // __wchar_16_cpp (which is defined in palinternal.h) needs to be redefined to wchar_16.

extern "C"
{                               
    int 
    __cdecl
    PAL__vsnprintf(
        LPSTR Buffer, 
        size_t Count, 
        LPCSTR Format, 
        va_list ap);
    
    int 
    __cdecl    
    PAL__wvsnprintf(
        LPWSTR Buffer, 
        size_t Count, 
        LPCWSTR Format, 
        va_list ap);

    int 
    __cdecl 
    PAL_vfprintf(
        PAL_FILE *stream, 
        const char *format, 
        va_list ap);

    int
    __cdecl
    PAL_vfwprintf(
        PAL_FILE *stream,
        const wchar_16 *format,
        va_list ap);  
} 

namespace CorUnix
{
    int 
    InternalVfprintf(
        CPalThread *pthrCurrent, 
        PAL_FILE *stream, 
        const char *format, 
        va_list ap);
    	
    int 
    InternalWvsnprintf(
        CPalThread *pthrCurrent, 
        LPWSTR Buffer, 
        size_t Count, 
        LPCWSTR Format, 
        va_list ap);

    int 
    InternalVsnprintf(
        CPalThread *pthrCurrent, 
        LPSTR Buffer, 
        size_t Count, 
        LPCSTR Format, 
        va_list ap);

    int
    InternalVfwprintf(
        CPalThread *pthrCurrent,
        PAL_FILE *stream,
        const wchar_16 *format,
        va_list ap); 
    
}
#else // __cplusplus

    int
    __cdecl
    PAL__vsnprintf(
        LPSTR Buffer, 
        size_t Count, 
        LPCSTR Format, 
        va_list ap);

    int
    __cdecl
    PAL__wvsnprintf(
        LPWSTR Buffer, 
        size_t Count, 
        LPCWSTR Format, 
        va_list ap);

    int 
    __cdecl 
    PAL_vfprintf(
        PAL_FILE *stream, 
        const char *format, 
        va_list ap);

    int
    __cdecl
    PAL_vfwprintf(
        PAL_FILE *stream,
        const wchar_16 *format,
        va_list ap);     

#endif // __cplusplus

#endif // _PRINTFCPP_HPP