bufferedio.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003  -------------------
00004  cvs         : $Id: bufferedio.h 1393 2007-11-22 18:26:05Z martin $
00005  begin       : Fri Feb 07 2003
00006  copyright   : (C) 2003 by Martin Preuss
00007  email       : martin@libchipcard.de
00008 
00009  ***************************************************************************
00010  *                                                                         *
00011  *   This library is free software; you can redistribute it and/or         *
00012  *   modify it under the terms of the GNU Lesser General Public            *
00013  *   License as published by the Free Software Foundation; either          *
00014  *   version 2.1 of the License, or (at your option) any later version.    *
00015  *                                                                         *
00016  *   This library is distributed in the hope that it will be useful,       *
00017  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00018  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
00019  *   Lesser General Public License for more details.                       *
00020  *                                                                         *
00021  *   You should have received a copy of the GNU Lesser General Public      *
00022  *   License along with this library; if not, write to the Free Software   *
00023  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston,                 *
00024  *   MA  02111-1307  USA                                                   *
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   /* No trailing semicolon because this is a macro call */
00053 #ifdef __cplusplus
00054 }
00055 #endif
00056 
00057 #include <gwenhywfar/error.h>
00058 
00059 /* for compatibility only */
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 /* GWENHYWFAR_BUFFEREDIO_H */
00464 
00465 
00466 
00467 
00468 

Generated on Fri Apr 11 01:53:46 2008 for gwenhywfar by  doxygen 1.5.5