VirtualBox

source: vbox/trunk/include/iprt/stream.h@ 4787

Last change on this file since 4787 was 4071, checked in by vboxsync, 17 years ago

Biggest check-in ever. New source code headers for all (C) innotek files.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.2 KB
Line 
1/** @file
2 * innotek Portable Runtime - I/O Stream.
3 */
4
5/*
6 * Copyright (C) 2006-2007 innotek GmbH
7 *
8 * This file is part of VirtualBox Open Source Edition (OSE), as
9 * available from http://www.virtualbox.org. This file is free software;
10 * you can redistribute it and/or modify it under the terms of the GNU
11 * General Public License as published by the Free Software Foundation,
12 * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
13 * distribution. VirtualBox OSE is distributed in the hope that it will
14 * be useful, but WITHOUT ANY WARRANTY of any kind.
15 */
16
17#ifndef ___iprt_stream_h
18#define ___iprt_stream_h
19
20#include <iprt/cdefs.h>
21#include <iprt/types.h>
22#include <iprt/stdarg.h>
23
24__BEGIN_DECLS
25
26/** @defgroup grp_rt_stream RTStrm - File Streams
27 * @ingroup grp_rt
28 * @{
29 */
30
31/** Pointer to a stream. */
32typedef struct RTSTREAM *PRTSTREAM;
33
34/** Pointer to the standard input stream. */
35extern RTDATADECL(PRTSTREAM) g_pStdIn;
36
37/** Pointer to the standard error stream. */
38extern RTDATADECL(PRTSTREAM) g_pStdErr;
39
40/** Pointer to the standard output stream. */
41extern RTDATADECL(PRTSTREAM) g_pStdOut;
42
43
44/**
45 * Opens a file stream.
46 *
47 * @returns iprt status code.
48 * @param pszFilename Path to the file to open.
49 * @param pszMode The open mode. See fopen() standard.
50 * Format: <a|r|w>[+][b|t]
51 * @param ppStream Where to store the opened stream.
52 */
53RTR3DECL(int) RTStrmOpen(const char *pszFilename, const char *pszMode, PRTSTREAM *ppStream);
54
55/**
56 * Closes the specified stream.
57 *
58 * @returns iprt status code.
59 * @param pStream The stream to close.
60 */
61RTR3DECL(int) RTStrmClose(PRTSTREAM pStream);
62
63/**
64 * Reads from a file stream.
65 *
66 * @returns iprt status code.
67 * @param pStream The stream.
68 * @param pvBuf Where to put the read bits.
69 * Must be cbRead bytes or more.
70 * @param cbRead Number of bytes to read.
71 * @param pcbRead Where to store the number of bytes actually read.
72 * If NULL cbRead bytes are read or an error is returned.
73 */
74RTR3DECL(int) RTStrmReadEx(PRTSTREAM pStream, void *pvBuf, size_t cbRead, size_t *pcbRead);
75
76/**
77 * Writes to a file stream.
78 *
79 * @returns iprt status code.
80 * @param pStream The stream.
81 * @param pvBuf Where to get the bits to write from.
82 * @param cbWrite Number of bytes to write.
83 * @param pcbWritten Where to store the number of bytes actually written.
84 * If NULL cbWrite bytes are written or an error is returned.
85 */
86RTR3DECL(int) RTStrmWriteEx(PRTSTREAM pStream, const void *pvBuf, size_t cbWrite, size_t *pcbWritten);
87
88/**
89 * Reads from a file stream.
90 *
91 * @returns iprt status code.
92 * @param pStream The stream.
93 * @param pvBuf Where to put the read bits.
94 * Must be cbRead bytes or more.
95 * @param cbRead Number of bytes to read.
96 */
97DECLINLINE(int) RTStrmRead(PRTSTREAM pStream, void *pvBuf, size_t cbRead)
98{
99 return RTStrmReadEx(pStream, pvBuf, cbRead, NULL);
100}
101
102/**
103 * Writes to a file stream.
104 *
105 * @returns iprt status code.
106 * @param pStream The stream.
107 * @param pvBuf Where to get the bits to write from.
108 * @param cbWrite Number of bytes to write.
109 */
110DECLINLINE(int) RTStrmWrite(PRTSTREAM pStream, const void *pvBuf, size_t cbWrite)
111{
112 return RTStrmWriteEx(pStream, pvBuf, cbWrite, NULL);
113}
114
115/**
116 * Reads a character from a file stream.
117 *
118 * @returns The char as an unsigned char cast to int.
119 * @returns -1 on failure.
120 * @param pStream The stream.
121 */
122RTR3DECL(int) RTStrmGetCh(PRTSTREAM pStream);
123
124/**
125 * Writes a character to a file stream.
126 *
127 * @returns iprt status code.
128 * @param pStream The stream.
129 * @param ch The char to write.
130 */
131RTR3DECL(int) RTStrmPutCh(PRTSTREAM pStream, int ch);
132
133/**
134 * Writes a string to a file stream.
135 *
136 * @returns iprt status code.
137 * @param pStream The stream.
138 * @param pszString The string to write.
139 * No newlines or anything is appended or prepended.
140 * The terminating '\\0' is not written, of course.
141 */
142RTR3DECL(int) RTStrmPutStr(PRTSTREAM pStream, const char *pszString);
143
144/**
145 * Reads a line from a file stream.
146 * A line ends with a '\\n', '\\0' or the end of the file.
147 *
148 * @returns iprt status code.
149 * @returns VINF_BUFFER_OVERFLOW if the buffer wasn't big enough to read an entire line.
150 * @param pStream The stream.
151 * @param pszString Where to store the line.
152 * The line will *NOT* contain any '\\n'.
153 * @param cchString The size of the string buffer.
154 */
155RTR3DECL(int) RTStrmGetLine(PRTSTREAM pStream, char *pszString, size_t cchString);
156
157/**
158 * Flushes a stream.
159 *
160 * @returns iprt status code.
161 * @param pStream The stream to flush.
162 */
163RTR3DECL(int) RTStrmFlush(PRTSTREAM pStream);
164
165/**
166 * Prints a formatted string to the specified stream.
167 *
168 * @returns Number of bytes printed.
169 * @param pStream The stream to print to.
170 * @param pszFormat Runtime format string.
171 * @param ... Arguments specified by pszFormat.
172 */
173RTR3DECL(int) RTStrmPrintf(PRTSTREAM pStream, const char *pszFormat, ...);
174
175/**
176 * Prints a formatted string to the specified stream.
177 *
178 * @returns Number of bytes printed.
179 * @param pStream The stream to print to.
180 * @param pszFormat Runtime format string.
181 * @param args Arguments specified by pszFormat.
182 */
183RTR3DECL(int) RTStrmPrintfV(PRTSTREAM pStream, const char *pszFormat, va_list args);
184
185/**
186 * Prints a formatted string to the standard output stream (g_pStdOut).
187 *
188 * @returns Number of bytes printed.
189 * @param pszFormat Runtime format string.
190 * @param ... Arguments specified by pszFormat.
191 */
192RTR3DECL(int) RTPrintf(const char *pszFormat, ...);
193
194/**
195 * Prints a formatted string to the standard output stream (g_pStdOut).
196 *
197 * @returns Number of bytes printed.
198 * @param pszFormat Runtime format string.
199 * @param args Arguments specified by pszFormat.
200 */
201RTR3DECL(int) RTPrintfV(const char *pszFormat, va_list args);
202
203/** @} */
204
205__END_DECLS
206
207#endif
208
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette