23 #ifndef _UCOMMON_FILE_H_
24 #define _UCOMMON_FILE_H_
26 #ifndef _UCOMMON_CONFIG_H_
30 #ifndef _UCOMMON_PROTOCOLS_H_
34 #ifndef _UCOMMON_THREAD_H_
38 #ifndef _UCOMMON_STRING_H_
42 #ifndef _UCOMMON_MEMORY_H_
46 #ifndef _UCOMMON_FSYS_H_
75 typedef ::fpos_t bookmark_t;
93 file(
const char *path,
const char *mode,
size_t size = 2);
102 file(
const char *path,
char **argv,
const char *mode,
char **envp = NULL);
118 inline operator bool()
const
125 inline bool operator !()
const
128 inline operator FILE *()
const
137 void open(
const char *path,
const char *mode,
size_t size = 2);
145 void open(
const char *path,
char **argv,
const char *mode,
char **envp = NULL);
157 {
if(fp) clearerr(fp);}
163 bool good(
void)
const;
171 inline size_t put(
const void *data,
size_t size)
172 {
return fp == NULL ? 0 : fwrite(data, 1, size, fp);}
174 inline size_t get(
void *data,
size_t size)
175 {
return fp == NULL ? 0 : fread(data, 1, size, fp);}
177 inline int put(
char value)
178 {
return fp == NULL ? EOF : fputc(value, fp);}
181 {
return fp == NULL ? EOF : fgetc(fp);}
183 inline int push(
char value)
184 {
return fp == NULL ? EOF : ungetc(value, fp);}
186 inline int puts(
const char *data)
187 {
return fp == NULL ? 0 : fputs(data, fp);}
189 inline char *gets(
char *data,
size_t size)
190 {
return fp == NULL ? NULL : fgets(data, size, fp);}
192 template<
typename T>
inline size_t read(T* data,
size_t count)
193 {
return fp == NULL ? 0 : fread(data,
sizeof(T), count, fp);}
195 template<
typename T>
inline size_t write(
const T* data,
size_t count)
196 {
return fp == NULL ? 0 : fwrite(data,
sizeof(T), count, fp);}
198 template<
typename T>
inline size_t read(T& data)
199 {
return fp == NULL ? 0 : fread(data,
sizeof(T), 1, fp);}
201 template<
typename T>
inline size_t write(
const T& data)
202 {
return fp == NULL ? 0 : fwrite(data,
sizeof(T), 1, fp);}
204 inline void get(bookmark_t& pos)
205 {
if(fp) fsetpos(fp, &pos);}
207 inline void set(bookmark_t& pos)
208 {
if(fp) fgetpos(fp, &pos);}
212 bool eof(
void)
const;
214 template<
typename T>
inline void offset(
long pos)
215 {
if(fp) fseek(fp,
sizeof(
const T) * pos, SEEK_CUR);}
217 inline void seek(
long offset)
218 {
if(fp) fseek(fp, offset, SEEK_SET);}
220 inline void move(
long offset)
221 {
if(fp) fseek(fp, offset, SEEK_CUR);}
223 inline void append(
void)
224 {
if (fp) fseek(fp, 0l, SEEK_END);}
226 inline void rewind(
void)
227 {
if(fp) ::rewind(fp);}
229 inline void flush(
void)
230 {
if(fp) ::fflush(fp);}
232 size_t printf(
const char *format, ...) __PRINTF(2, 3);
234 size_t scanf(const
char *format, ...) __SCANF(2, 3);
236 bool is_tty(
void) const;
Abstract interfaces and support.
void clear(void)
Clear error state.
Common namespace for all ucommon objects.
Common character processing protocol.
Various miscellaneous platform specific headers and defines.
Thread-aware file system manipulation class.
Thread classes and sychronization objects.
Private heaps, pools, and associations.
Access standard files through character protocol.
A common string class and character string support functions.