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;
Thread-aware file system manipulation class.
Common namespace for all ucommon objects.
Access standard files through character protocol.
Thread classes and sychronization objects.
A common string class and character string support functions.
Abstract interfaces and support.
Private heaps, pools, and associations.
void clear(void)
Clear error state.
Various miscellaneous platform specific headers and defines.
Common character processing protocol.