Main Page | Modules | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

bufferedio.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile: bufferedio.h,v $
00003  -------------------
00004  cvs         : $Id: bufferedio.h,v 1.25 2005/07/29 02:03:56 aquamaniac Exp $
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   typedef struct GWEN_BUFFEREDIOSTRUCT GWEN_BUFFEREDIO;
00039   GWEN_INHERIT_FUNCTION_LIB_DEFS(GWEN_BUFFEREDIO, GWENHYWFAR_API)
00040   /* No trailing semicolon because this is a macro call */
00041 #ifdef __cplusplus
00042 }
00043 #endif
00044 
00045 #include <gwenhywfar/error.h>
00046 
00047 /* for compatibility only */
00048 #include <gwenhywfar/bio_file.h>
00049 #include <gwenhywfar/bio_socket.h>
00050 #include <gwenhywfar/bio_buffer.h>
00051 #include <gwenhywfar/buffer.h>
00052 
00053 
00054 
00055 #ifdef __cplusplus
00056 extern "C" {
00057 #endif
00058 
00059 #define GWEN_BUFFEREDIO_ERROR_TYPE    "BufferedIO"
00060 #define GWEN_BUFFEREDIO_ERROR_READ    1
00061 #define GWEN_BUFFEREDIO_ERROR_WRITE   2
00062 #define GWEN_BUFFEREDIO_ERROR_CLOSE   3
00063 #define GWEN_BUFFEREDIO_ERROR_TIMEOUT 4
00064 #define GWEN_BUFFEREDIO_ERROR_PARTIAL 5
00065 #define GWEN_BUFFEREDIO_ERROR_EOF     6
00066 #define GWEN_BUFFEREDIO_ERROR_NO_DATA 7
00067 
00068 
00069 #define GWEN_BUFFEREDIO_CHAR_ERROR   (-1)
00070 #define GWEN_BUFFEREDIO_CHAR_EOF     (-2)
00071 #define GWEN_BUFFEREDIO_CHAR_NO_DATA (-3)
00072 
00073 
00075 #define GWEN_BUFFEREDIO_FLAGS_CLOSE   0x00000001
00076 
00077 #define GWEN_BUFFEREDIO_FLAGS_DEFAULT \
00078   (\
00079   GWEN_BUFFEREDIO_FLAGS_CLOSE\
00080   )
00081 
00082 
00083 
00084 typedef enum {
00085   GWEN_LineModeUnix=0,
00086   GWEN_LineModeDOS
00087 } GWEN_BUFFEREDIOLINEMODE;
00088 
00089 typedef GWEN_ERRORCODE (*GWEN_BUFFEREDIOREADFN)(GWEN_BUFFEREDIO *dm,
00090                                                  char *buffer,
00091                                                   int *size,
00092                                                   int timeout);
00093 typedef GWEN_ERRORCODE (*GWEN_BUFFEREDIOWRITEFN)(GWEN_BUFFEREDIO *dm,
00094                                                    const char *buffer,
00095                                                    int *size,
00096                                                    int timeout);
00097 typedef GWEN_ERRORCODE (*GWEN_BUFFEREDIOCLOSEFN)(GWEN_BUFFEREDIO *dm);
00098 
00099 
00100 
00106 GWENHYWFAR_API GWEN_BUFFEREDIO *GWEN_BufferedIO_new();
00107 
00112 GWENHYWFAR_API void GWEN_BufferedIO_free(GWEN_BUFFEREDIO *dm);
00113 
00124 GWENHYWFAR_API void GWEN_BufferedIO_SetReadBuffer(GWEN_BUFFEREDIO *bt,
00125                                                   char *buffer,
00126                                                   int len);
00127 
00137 GWENHYWFAR_API void GWEN_BufferedIO_SetWriteBuffer(GWEN_BUFFEREDIO *bt,
00138                                                    char *buffer,
00139                                                    int len);
00140 
00146 GWENHYWFAR_API int GWEN_BufferedIO_CheckEOF(GWEN_BUFFEREDIO *dm);
00147 
00155 GWENHYWFAR_API int GWEN_BufferedIO_PeekChar(GWEN_BUFFEREDIO *dm);
00156 
00168 GWENHYWFAR_API int GWEN_BufferedIO_ReadChar(GWEN_BUFFEREDIO *bio);
00169 
00175 GWENHYWFAR_API GWEN_ERRORCODE GWEN_BufferedIO_Flush(GWEN_BUFFEREDIO *bt);
00176 
00187 GWENHYWFAR_API GWEN_ERRORCODE GWEN_BufferedIO_ShortFlush(GWEN_BUFFEREDIO *bt);
00188 
00189 /*
00190  * Returns !=0 if the read buffer is empty, 0 if it is not.
00191  */
00192 GWENHYWFAR_API int GWEN_BufferedIO_ReadBufferEmpty(GWEN_BUFFEREDIO *bt);
00193 
00194 
00195 /*
00196  * Returns !=0 if the write buffer is empty, 0 if it is not.
00197  */
00198 GWENHYWFAR_API int GWEN_BufferedIO_WriteBufferEmpty(GWEN_BUFFEREDIO *bt);
00199 
00206 GWENHYWFAR_API GWEN_ERRORCODE GWEN_BufferedIO_ReadLine(GWEN_BUFFEREDIO *bt,
00207                                                        char *buffer,
00208                                                        unsigned int s);
00209 
00216 GWENHYWFAR_API
00217 GWEN_ERRORCODE GWEN_BufferedIO_ReadLine2Buffer(GWEN_BUFFEREDIO *bt,
00218                                                GWEN_BUFFER *buffer);
00219 
00224 GWENHYWFAR_API GWEN_ERRORCODE GWEN_BufferedIO_WriteChar(GWEN_BUFFEREDIO *dm,
00225                                                         char c);
00226 
00232 GWENHYWFAR_API GWEN_ERRORCODE GWEN_BufferedIO_Write(GWEN_BUFFEREDIO *bt,
00233                                                     const char *buffer);
00234 
00241 GWENHYWFAR_API GWEN_ERRORCODE GWEN_BufferedIO_WriteLine(GWEN_BUFFEREDIO *bt,
00242                                                         const char *buffer);
00243 
00248 GWENHYWFAR_API GWEN_ERRORCODE GWEN_BufferedIO_Close(GWEN_BUFFEREDIO *dm);
00249 
00250 
00259 GWENHYWFAR_API
00260 void GWEN_BufferedIO_SetLineMode(GWEN_BUFFEREDIO *dm,
00261                                  GWEN_BUFFEREDIOLINEMODE lm);
00262 
00267 GWENHYWFAR_API
00268 GWEN_TYPE_UINT32 GWEN_BufferedIO_GetFlags(const GWEN_BUFFEREDIO *bt);
00269 
00274 GWENHYWFAR_API
00275 void GWEN_BufferedIO_SetFlags(GWEN_BUFFEREDIO *bt, GWEN_TYPE_UINT32 f);
00276 
00281 GWENHYWFAR_API
00282 void GWEN_BufferedIO_AddFlags(GWEN_BUFFEREDIO *bt, GWEN_TYPE_UINT32 f);
00283 
00288 GWENHYWFAR_API
00289 void GWEN_BufferedIO_SubFlags(GWEN_BUFFEREDIO *bt, GWEN_TYPE_UINT32 f);
00290 
00291 
00296 GWENHYWFAR_API
00297 GWEN_BUFFEREDIOLINEMODE GWEN_BufferedIO_GetLineMode(GWEN_BUFFEREDIO *dm);
00298 
00299 
00309 GWENHYWFAR_API
00310 void GWEN_BufferedIO_SetTimeout(GWEN_BUFFEREDIO *dm, int timeout);
00311 
00312 
00316 GWENHYWFAR_API
00317 int GWEN_BufferedIO_GetTimeout(GWEN_BUFFEREDIO *dm);
00318 
00319 
00320 GWENHYWFAR_API
00321 int GWEN_BufferedIO_GetLines(const GWEN_BUFFEREDIO *dm);
00322 
00323 
00324 GWENHYWFAR_API
00325 int GWEN_BufferedIO_GetLinePos(const GWEN_BUFFEREDIO *dm);
00326 
00327 
00328 GWENHYWFAR_API
00329 int GWEN_BufferedIO_GetBytesRead(const GWEN_BUFFEREDIO *dm);
00330 
00331 GWENHYWFAR_API
00332 int GWEN_BufferedIO_GetBytesWritten(const GWEN_BUFFEREDIO *dm);
00333 
00334 
00335 GWENHYWFAR_API
00336 void GWEN_BufferedIO_SetReadFn(GWEN_BUFFEREDIO *dm,
00337                                GWEN_BUFFEREDIOREADFN fn);
00338 GWENHYWFAR_API
00339 void GWEN_BufferedIO_SetWriteFn(GWEN_BUFFEREDIO *dm,
00340                                 GWEN_BUFFEREDIOWRITEFN fn);
00341 GWENHYWFAR_API
00342 void GWEN_BufferedIO_SetCloseFn(GWEN_BUFFEREDIO *dm,
00343                                 GWEN_BUFFEREDIOCLOSEFN fn);
00344 
00345 
00350 GWENHYWFAR_API
00351 GWEN_ERRORCODE GWEN_BufferedIO_Abandon(GWEN_BUFFEREDIO *dm);
00352 
00353 
00366 GWENHYWFAR_API
00367   GWEN_ERRORCODE GWEN_BufferedIO_WriteRaw(GWEN_BUFFEREDIO *bt,
00368                                           const char *buffer,
00369                                           unsigned int *bsize);
00370 
00371 
00380 GWENHYWFAR_API
00381   GWEN_ERRORCODE GWEN_BufferedIO_ReadRaw(GWEN_BUFFEREDIO *bt,
00382                                          char *buffer,
00383                                          unsigned int *bsize);
00384 
00393 GWENHYWFAR_API
00394   GWEN_ERRORCODE GWEN_BufferedIO_ReadRawForced(GWEN_BUFFEREDIO *bt,
00395                                                char *buffer,
00396                                                unsigned int *bsize);
00397 
00406 GWENHYWFAR_API
00407   GWEN_ERRORCODE GWEN_BufferedIO_WriteRawForced(GWEN_BUFFEREDIO *bt,
00408                                                 char *buffer,
00409                                                 unsigned int *bsize);
00410 
00411 
00412 
00413 #ifdef __cplusplus
00414 }
00415 #endif
00416 
00417 
00418 #endif /* GWENHYWFAR_BUFFEREDIO_H */
00419 
00420 
00421 
00422 
00423 

Generated on Wed Oct 5 15:12:37 2005 for gwenhywfar by  doxygen 1.4.4