bufferedio.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef GWENHYWFAR_BUFFEREDIO_H
00030 #define GWENHYWFAR_BUFFEREDIO_H
00031
00032 #include <gwenhywfar/gwenhywfarapi.h>
00033 #include <gwenhywfar/inherit.h>
00034
00035 #ifdef __cplusplus
00036 extern "C" {
00037 #endif
00038
00049 typedef struct GWEN_BUFFEREDIOSTRUCT GWEN_BUFFEREDIO;
00050
00051 GWEN_INHERIT_FUNCTION_LIB_DEFS(GWEN_BUFFEREDIO, GWENHYWFAR_API)
00052
00053 #ifdef __cplusplus
00054 }
00055 #endif
00056
00057 #include <gwenhywfar/error.h>
00058
00059
00060 #include <gwenhywfar/bio_file.h>
00061 #include <gwenhywfar/bio_socket.h>
00062 #include <gwenhywfar/bio_buffer.h>
00063 #include <gwenhywfar/buffer.h>
00064
00065
00066
00067 #ifdef __cplusplus
00068 extern "C" {
00069 #endif
00070
00071 #define GWEN_BUFFEREDIO_ERROR_TYPE "BufferedIO"
00072 #define GWEN_BUFFEREDIO_ERROR_READ 1
00073 #define GWEN_BUFFEREDIO_ERROR_WRITE 2
00074 #define GWEN_BUFFEREDIO_ERROR_CLOSE 3
00075 #define GWEN_BUFFEREDIO_ERROR_TIMEOUT 4
00076 #define GWEN_BUFFEREDIO_ERROR_PARTIAL 5
00077 #define GWEN_BUFFEREDIO_ERROR_EOF 6
00078 #define GWEN_BUFFEREDIO_ERROR_NO_DATA 7
00079
00080
00081 #define GWEN_BUFFEREDIO_CHAR_ERROR (-1)
00082 #define GWEN_BUFFEREDIO_CHAR_EOF (-2)
00083 #define GWEN_BUFFEREDIO_CHAR_NO_DATA (-3)
00084
00085
00087 #define GWEN_BUFFEREDIO_FLAGS_CLOSE 0x00000001
00088 #define GWEN_BUFFEREDIO_FLAGS_UNTIL_EMPTY_LINE 0x00000002
00089
00090 #define GWEN_BUFFEREDIO_FLAGS_DEFAULT \
00091 (\
00092 GWEN_BUFFEREDIO_FLAGS_CLOSE\
00093 )
00094
00095
00096
00097 typedef enum {
00098 GWEN_LineModeUnix=0,
00099 GWEN_LineModeDOS
00100 } GWEN_BUFFEREDIOLINEMODE;
00101
00102 typedef int (*GWEN_BUFFEREDIOREADFN)(GWEN_BUFFEREDIO *dm,
00103 char *buffer,
00104 int *size,
00105 int timeout);
00106 typedef int (*GWEN_BUFFEREDIOWRITEFN)(GWEN_BUFFEREDIO *dm,
00107 const char *buffer,
00108 int *size,
00109 int timeout);
00110 typedef int (*GWEN_BUFFEREDIOCLOSEFN)(GWEN_BUFFEREDIO *dm);
00111
00112
00113
00119 GWENHYWFAR_API GWEN_BUFFEREDIO *GWEN_BufferedIO_new();
00120
00125 GWENHYWFAR_API void GWEN_BufferedIO_free(GWEN_BUFFEREDIO *dm);
00126
00148 GWENHYWFAR_API void GWEN_BufferedIO_SetReadBuffer(GWEN_BUFFEREDIO *bt,
00149 char *buffer,
00150 int len);
00151
00173 GWENHYWFAR_API void GWEN_BufferedIO_SetWriteBuffer(GWEN_BUFFEREDIO *bt,
00174 char *buffer,
00175 int len);
00176
00182 GWENHYWFAR_API int GWEN_BufferedIO_CheckEOF(GWEN_BUFFEREDIO *dm);
00183
00191 GWENHYWFAR_API int GWEN_BufferedIO_PeekChar(GWEN_BUFFEREDIO *dm);
00192
00204 GWENHYWFAR_API int GWEN_BufferedIO_ReadChar(GWEN_BUFFEREDIO *bio);
00205
00211 GWENHYWFAR_API int GWEN_BufferedIO_Flush(GWEN_BUFFEREDIO *bt);
00212
00223 GWENHYWFAR_API int GWEN_BufferedIO_ShortFlush(GWEN_BUFFEREDIO *bt);
00224
00228 GWENHYWFAR_API int GWEN_BufferedIO_ReadBufferEmpty(GWEN_BUFFEREDIO *bt);
00229
00230
00234 GWENHYWFAR_API int GWEN_BufferedIO_WriteBufferEmpty(GWEN_BUFFEREDIO *bt);
00235
00242 GWENHYWFAR_API int GWEN_BufferedIO_ReadLine(GWEN_BUFFEREDIO *bt,
00243 char *buffer,
00244 unsigned int s);
00245
00252 GWENHYWFAR_API
00253 int GWEN_BufferedIO_ReadLine2Buffer(GWEN_BUFFEREDIO *bt,
00254 GWEN_BUFFER *buffer);
00255
00260 GWENHYWFAR_API int GWEN_BufferedIO_WriteChar(GWEN_BUFFEREDIO *dm,
00261 char c);
00262
00268 GWENHYWFAR_API int GWEN_BufferedIO_Write(GWEN_BUFFEREDIO *bt,
00269 const char *buffer);
00270
00277 GWENHYWFAR_API int GWEN_BufferedIO_WriteLine(GWEN_BUFFEREDIO *bt,
00278 const char *buffer);
00279
00284 GWENHYWFAR_API int GWEN_BufferedIO_Close(GWEN_BUFFEREDIO *dm);
00285
00286
00295 GWENHYWFAR_API
00296 void GWEN_BufferedIO_SetLineMode(GWEN_BUFFEREDIO *dm,
00297 GWEN_BUFFEREDIOLINEMODE lm);
00298
00303 GWENHYWFAR_API
00304 uint32_t GWEN_BufferedIO_GetFlags(const GWEN_BUFFEREDIO *bt);
00305
00310 GWENHYWFAR_API
00311 void GWEN_BufferedIO_SetFlags(GWEN_BUFFEREDIO *bt, uint32_t f);
00312
00317 GWENHYWFAR_API
00318 void GWEN_BufferedIO_AddFlags(GWEN_BUFFEREDIO *bt, uint32_t f);
00319
00324 GWENHYWFAR_API
00325 void GWEN_BufferedIO_SubFlags(GWEN_BUFFEREDIO *bt, uint32_t f);
00326
00327
00332 GWENHYWFAR_API
00333 GWEN_BUFFEREDIOLINEMODE GWEN_BufferedIO_GetLineMode(const GWEN_BUFFEREDIO *dm);
00334
00335
00345 GWENHYWFAR_API
00346 void GWEN_BufferedIO_SetTimeout(GWEN_BUFFEREDIO *dm, int timeout);
00347
00348
00352 GWENHYWFAR_API
00353 int GWEN_BufferedIO_GetTimeout(const GWEN_BUFFEREDIO *dm);
00354
00357 GWENHYWFAR_API
00358 int GWEN_BufferedIO_GetLines(const GWEN_BUFFEREDIO *dm);
00359
00362 GWENHYWFAR_API
00363 int GWEN_BufferedIO_GetLinePos(const GWEN_BUFFEREDIO *dm);
00364
00366 GWENHYWFAR_API
00367 int GWEN_BufferedIO_GetBytesRead(const GWEN_BUFFEREDIO *dm);
00368
00370 GWENHYWFAR_API
00371 int GWEN_BufferedIO_GetBytesWritten(const GWEN_BUFFEREDIO *dm);
00372
00373
00374 GWENHYWFAR_API
00375 void GWEN_BufferedIO_SetReadFn(GWEN_BUFFEREDIO *dm,
00376 GWEN_BUFFEREDIOREADFN fn);
00377 GWENHYWFAR_API
00378 void GWEN_BufferedIO_SetWriteFn(GWEN_BUFFEREDIO *dm,
00379 GWEN_BUFFEREDIOWRITEFN fn);
00380 GWENHYWFAR_API
00381 void GWEN_BufferedIO_SetCloseFn(GWEN_BUFFEREDIO *dm,
00382 GWEN_BUFFEREDIOCLOSEFN fn);
00383
00384
00389 GWENHYWFAR_API
00390 int GWEN_BufferedIO_Abandon(GWEN_BUFFEREDIO *dm);
00391
00392
00408 GWENHYWFAR_API
00409 int GWEN_BufferedIO_WriteRaw(GWEN_BUFFEREDIO *bt,
00410 const char *buffer,
00411 unsigned int *bsize);
00412
00413
00425 GWENHYWFAR_API
00426 int GWEN_BufferedIO_ReadRaw(GWEN_BUFFEREDIO *bt,
00427 char *buffer,
00428 unsigned int *bsize);
00429
00438 GWENHYWFAR_API
00439 int GWEN_BufferedIO_ReadRawForced(GWEN_BUFFEREDIO *bt,
00440 char *buffer,
00441 unsigned int *bsize);
00442
00451 GWENHYWFAR_API
00452 int GWEN_BufferedIO_WriteRawForced(GWEN_BUFFEREDIO *bt,
00453 const char *buffer,
00454 unsigned int *bsize);
00455
00456
00457
00458 #ifdef __cplusplus
00459 }
00460 #endif
00461
00462
00463 #endif
00464
00465
00466
00467
00468