bufferedio.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003  -------------------
00004  cvs         : $Id: bufferedio.h 995 2006-03-03 11:54:36Z cstim $
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 
00089 #define GWEN_BUFFEREDIO_FLAGS_DEFAULT \
00090   (\
00091   GWEN_BUFFEREDIO_FLAGS_CLOSE\
00092   )
00093 
00094 
00095 
00096 typedef enum {
00097   GWEN_LineModeUnix=0,
00098   GWEN_LineModeDOS
00099 } GWEN_BUFFEREDIOLINEMODE;
00100 
00101 typedef GWEN_ERRORCODE (*GWEN_BUFFEREDIOREADFN)(GWEN_BUFFEREDIO *dm,
00102                                                  char *buffer,
00103                                                   int *size,
00104                                                   int timeout);
00105 typedef GWEN_ERRORCODE (*GWEN_BUFFEREDIOWRITEFN)(GWEN_BUFFEREDIO *dm,
00106                                                    const char *buffer,
00107                                                    int *size,
00108                                                    int timeout);
00109 typedef GWEN_ERRORCODE (*GWEN_BUFFEREDIOCLOSEFN)(GWEN_BUFFEREDIO *dm);
00110 
00111 
00112 
00118 GWENHYWFAR_API GWEN_BUFFEREDIO *GWEN_BufferedIO_new();
00119 
00124 GWENHYWFAR_API void GWEN_BufferedIO_free(GWEN_BUFFEREDIO *dm);
00125 
00147 GWENHYWFAR_API void GWEN_BufferedIO_SetReadBuffer(GWEN_BUFFEREDIO *bt,
00148                                                   char *buffer,
00149                                                   int len);
00150 
00172 GWENHYWFAR_API void GWEN_BufferedIO_SetWriteBuffer(GWEN_BUFFEREDIO *bt,
00173                                                    char *buffer,
00174                                                    int len);
00175 
00181 GWENHYWFAR_API int GWEN_BufferedIO_CheckEOF(GWEN_BUFFEREDIO *dm);
00182 
00190 GWENHYWFAR_API int GWEN_BufferedIO_PeekChar(GWEN_BUFFEREDIO *dm);
00191 
00203 GWENHYWFAR_API int GWEN_BufferedIO_ReadChar(GWEN_BUFFEREDIO *bio);
00204 
00210 GWENHYWFAR_API GWEN_ERRORCODE GWEN_BufferedIO_Flush(GWEN_BUFFEREDIO *bt);
00211 
00222 GWENHYWFAR_API GWEN_ERRORCODE GWEN_BufferedIO_ShortFlush(GWEN_BUFFEREDIO *bt);
00223 
00227 GWENHYWFAR_API int GWEN_BufferedIO_ReadBufferEmpty(GWEN_BUFFEREDIO *bt);
00228 
00229 
00233 GWENHYWFAR_API int GWEN_BufferedIO_WriteBufferEmpty(GWEN_BUFFEREDIO *bt);
00234 
00241 GWENHYWFAR_API GWEN_ERRORCODE GWEN_BufferedIO_ReadLine(GWEN_BUFFEREDIO *bt,
00242                                                        char *buffer,
00243                                                        unsigned int s);
00244 
00251 GWENHYWFAR_API
00252 GWEN_ERRORCODE GWEN_BufferedIO_ReadLine2Buffer(GWEN_BUFFEREDIO *bt,
00253                                                GWEN_BUFFER *buffer);
00254 
00259 GWENHYWFAR_API GWEN_ERRORCODE GWEN_BufferedIO_WriteChar(GWEN_BUFFEREDIO *dm,
00260                                                         char c);
00261 
00267 GWENHYWFAR_API GWEN_ERRORCODE GWEN_BufferedIO_Write(GWEN_BUFFEREDIO *bt,
00268                                                     const char *buffer);
00269 
00276 GWENHYWFAR_API GWEN_ERRORCODE GWEN_BufferedIO_WriteLine(GWEN_BUFFEREDIO *bt,
00277                                                         const char *buffer);
00278 
00283 GWENHYWFAR_API GWEN_ERRORCODE GWEN_BufferedIO_Close(GWEN_BUFFEREDIO *dm);
00284 
00285 
00294 GWENHYWFAR_API
00295 void GWEN_BufferedIO_SetLineMode(GWEN_BUFFEREDIO *dm,
00296                                  GWEN_BUFFEREDIOLINEMODE lm);
00297 
00302 GWENHYWFAR_API
00303 GWEN_TYPE_UINT32 GWEN_BufferedIO_GetFlags(const GWEN_BUFFEREDIO *bt);
00304 
00309 GWENHYWFAR_API
00310 void GWEN_BufferedIO_SetFlags(GWEN_BUFFEREDIO *bt, GWEN_TYPE_UINT32 f);
00311 
00316 GWENHYWFAR_API
00317 void GWEN_BufferedIO_AddFlags(GWEN_BUFFEREDIO *bt, GWEN_TYPE_UINT32 f);
00318 
00323 GWENHYWFAR_API
00324 void GWEN_BufferedIO_SubFlags(GWEN_BUFFEREDIO *bt, GWEN_TYPE_UINT32 f);
00325 
00326 
00331 GWENHYWFAR_API
00332 GWEN_BUFFEREDIOLINEMODE GWEN_BufferedIO_GetLineMode(const GWEN_BUFFEREDIO *dm);
00333 
00334 
00344 GWENHYWFAR_API
00345 void GWEN_BufferedIO_SetTimeout(GWEN_BUFFEREDIO *dm, int timeout);
00346 
00347 
00351 GWENHYWFAR_API
00352 int GWEN_BufferedIO_GetTimeout(const GWEN_BUFFEREDIO *dm);
00353 
00356 GWENHYWFAR_API
00357 int GWEN_BufferedIO_GetLines(const GWEN_BUFFEREDIO *dm);
00358 
00361 GWENHYWFAR_API
00362 int GWEN_BufferedIO_GetLinePos(const GWEN_BUFFEREDIO *dm);
00363 
00365 GWENHYWFAR_API
00366 int GWEN_BufferedIO_GetBytesRead(const GWEN_BUFFEREDIO *dm);
00367 
00369 GWENHYWFAR_API
00370 int GWEN_BufferedIO_GetBytesWritten(const GWEN_BUFFEREDIO *dm);
00371 
00372 
00373 GWENHYWFAR_API
00374 void GWEN_BufferedIO_SetReadFn(GWEN_BUFFEREDIO *dm,
00375                                GWEN_BUFFEREDIOREADFN fn);
00376 GWENHYWFAR_API
00377 void GWEN_BufferedIO_SetWriteFn(GWEN_BUFFEREDIO *dm,
00378                                 GWEN_BUFFEREDIOWRITEFN fn);
00379 GWENHYWFAR_API
00380 void GWEN_BufferedIO_SetCloseFn(GWEN_BUFFEREDIO *dm,
00381                                 GWEN_BUFFEREDIOCLOSEFN fn);
00382 
00383 
00388 GWENHYWFAR_API
00389 GWEN_ERRORCODE GWEN_BufferedIO_Abandon(GWEN_BUFFEREDIO *dm);
00390 
00391 
00407 GWENHYWFAR_API
00408   GWEN_ERRORCODE GWEN_BufferedIO_WriteRaw(GWEN_BUFFEREDIO *bt,
00409                                           const char *buffer,
00410                                           unsigned int *bsize);
00411 
00412 
00424 GWENHYWFAR_API
00425   GWEN_ERRORCODE GWEN_BufferedIO_ReadRaw(GWEN_BUFFEREDIO *bt,
00426                                          char *buffer,
00427                                          unsigned int *bsize);
00428 
00437 GWENHYWFAR_API
00438   GWEN_ERRORCODE GWEN_BufferedIO_ReadRawForced(GWEN_BUFFEREDIO *bt,
00439                                                char *buffer,
00440                                                unsigned int *bsize);
00441 
00450 GWENHYWFAR_API
00451   GWEN_ERRORCODE GWEN_BufferedIO_WriteRawForced(GWEN_BUFFEREDIO *bt,
00452                                                 const char *buffer,
00453                                                 unsigned int *bsize);
00454 
00455 
00456 
00457 #ifdef __cplusplus
00458 }
00459 #endif
00460 
00461 
00462 #endif /* GWENHYWFAR_BUFFEREDIO_H */
00463 
00464 
00465 
00466 
00467 

Generated on Sat Sep 16 11:19:14 2006 for gwenhywfar by  doxygen 1.4.7