Reactos
at master 208 lines 3.9 kB view raw
1/* 2 * PROJECT: ReactOS Console Utilities Library 3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+) 4 * PURPOSE: Provides basic abstraction wrappers around CRT streams or 5 * Win32 console API I/O functions, to deal with i18n + Unicode 6 * related problems. 7 * COPYRIGHT: Copyright 2017-2018 ReactOS Team 8 * Copyright 2017-2018 Hermes Belusca-Maito 9 */ 10 11/** 12 * @file outstream.h 13 * @ingroup ConUtils 14 * 15 * @brief Console I/O utility API -- Output 16 **/ 17 18#ifndef __OUTSTREAM_H__ 19#define __OUTSTREAM_H__ 20 21#pragma once 22 23/* 24 * Enable this define if you want to only use CRT functions to output 25 * UNICODE stream to the console, as in the way explained by 26 * http://archives.miloush.net/michkap/archive/2008/03/18/8306597.html 27 */ 28/** NOTE: Experimental! Don't use USE_CRT yet because output to console is a bit broken **/ 29// #define USE_CRT 30 31#ifndef _UNICODE 32#error The ConUtils library at the moment only supports compilation with _UNICODE defined! 33#endif 34 35#ifdef __cplusplus 36extern "C" { 37#endif 38 39// Shadow type, implementation-specific 40typedef struct _CON_STREAM CON_STREAM, *PCON_STREAM; 41 42// typedef INT (__stdcall *CON_READ_FUNC)( 43 // IN PCON_STREAM Stream, 44 // OUT PTCHAR szStr, 45 // IN OUT PDWORD len); 46 47typedef INT (__stdcall *CON_WRITE_FUNC)( 48 IN PCON_STREAM Stream, 49 IN PCTCH szStr, 50 IN DWORD len); 51 52 53INT 54__stdcall 55ConWrite( 56 IN PCON_STREAM Stream, 57 IN PCTCH szStr, 58 IN DWORD len); 59 60INT 61ConStreamWrite( 62 IN PCON_STREAM Stream, 63 IN PCTCH szStr, 64 IN DWORD len); 65 66INT 67ConPuts( 68 IN PCON_STREAM Stream, 69 IN PCWSTR szStr); 70 71INT 72ConPrintfV( 73 IN PCON_STREAM Stream, 74 IN PCWSTR szStr, 75 IN va_list args); 76 77INT 78__cdecl 79ConPrintf( 80 IN PCON_STREAM Stream, 81 IN PCWSTR szStr, 82 ...); 83 84INT 85ConResPutsEx( 86 IN PCON_STREAM Stream, 87 IN HINSTANCE hInstance OPTIONAL, 88 IN UINT uID, 89 IN LANGID LanguageId); 90 91INT 92ConResPuts( 93 IN PCON_STREAM Stream, 94 IN UINT uID); 95 96INT 97ConResPrintfExV( 98 IN PCON_STREAM Stream, 99 IN HINSTANCE hInstance OPTIONAL, 100 IN UINT uID, 101 IN LANGID LanguageId, 102 IN va_list args); 103 104INT 105ConResPrintfV( 106 IN PCON_STREAM Stream, 107 IN UINT uID, 108 IN va_list args); 109 110INT 111__cdecl 112ConResPrintfEx( 113 IN PCON_STREAM Stream, 114 IN HINSTANCE hInstance OPTIONAL, 115 IN UINT uID, 116 IN LANGID LanguageId, 117 ...); 118 119INT 120__cdecl 121ConResPrintf( 122 IN PCON_STREAM Stream, 123 IN UINT uID, 124 ...); 125 126INT 127ConMsgPuts( 128 IN PCON_STREAM Stream, 129 IN DWORD dwFlags, 130 IN LPCVOID lpSource OPTIONAL, 131 IN DWORD dwMessageId, 132 IN DWORD dwLanguageId); 133 134INT 135ConMsgPrintf2V( 136 IN PCON_STREAM Stream, 137 IN DWORD dwFlags, 138 IN LPCVOID lpSource OPTIONAL, 139 IN DWORD dwMessageId, 140 IN DWORD dwLanguageId, 141 IN va_list args); 142 143INT 144ConMsgPrintfV( 145 IN PCON_STREAM Stream, 146 IN DWORD dwFlags, 147 IN LPCVOID lpSource OPTIONAL, 148 IN DWORD dwMessageId, 149 IN DWORD dwLanguageId, 150 IN va_list *Arguments OPTIONAL); 151 152INT 153__cdecl 154ConMsgPrintf( 155 IN PCON_STREAM Stream, 156 IN DWORD dwFlags, 157 IN LPCVOID lpSource OPTIONAL, 158 IN DWORD dwMessageId, 159 IN DWORD dwLanguageId, 160 ...); 161 162INT 163ConResMsgPrintfExV( 164 IN PCON_STREAM Stream, 165 IN HINSTANCE hInstance OPTIONAL, 166 IN DWORD dwFlags, 167 IN UINT uID, 168 IN LANGID LanguageId, 169 IN va_list *Arguments OPTIONAL); 170 171INT 172ConResMsgPrintfV( 173 IN PCON_STREAM Stream, 174 IN DWORD dwFlags, 175 IN UINT uID, 176 IN va_list *Arguments OPTIONAL); 177 178INT 179__cdecl 180ConResMsgPrintfEx( 181 IN PCON_STREAM Stream, 182 IN HINSTANCE hInstance OPTIONAL, 183 IN DWORD dwFlags, 184 IN UINT uID, 185 IN LANGID LanguageId, 186 ...); 187 188INT 189__cdecl 190ConResMsgPrintf( 191 IN PCON_STREAM Stream, 192 IN DWORD dwFlags, 193 IN UINT uID, 194 ...); 195 196 197 198VOID 199ConClearLine(IN PCON_STREAM Stream); 200 201 202#ifdef __cplusplus 203} 204#endif 205 206#endif /* __OUTSTREAM_H__ */ 207 208/* EOF */