00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifdef HAVE_CONFIG_H
00021 #include <config.h>
00022 #endif
00023
00024 #include "string_common.h"
00025 #include "bool.h"
00026
00027 #include <stdlib.h>
00028 #include <string.h>
00029 #include <stdio.h>
00030 #include <unistd.h>
00031
00032 #ifndef __cbuffer__h__
00033 #define __cbuffer__h__
00034
00035 #ifdef __cplusplus
00036 extern "C" {
00037 #endif
00038
00039 typedef size_t Position;
00040 typedef size_t Size;
00041 typedef FILE* FD;
00042
00043 enum _TypeResult {TypeResultEOF, TypeResultNORMAL};
00044 typedef enum _TypeResult TypeResult;
00045
00046 struct _Result {
00047
00048 TypeResult type;
00049 char ch;
00050 };
00051 typedef struct _Result Result;
00052
00053 struct _CBufferFromString {
00054
00055 CString string;
00056 Size size;
00057 Position pos;
00058 };
00059 typedef struct _CBufferFromString* CBufferFromString;
00060
00061 struct _CBufferFromFD {
00062
00063 char* buffer;
00064 Size size;
00065 Size current_size;
00066 Position pos;
00067 FD fd;
00068 };
00069 typedef struct _CBufferFromFD* CBufferFromFD;
00070
00071 struct _CBufferFromSTDIN {
00072
00073 char* buffer;
00074 Size size;
00075 Size current_size;
00076 Position pos;
00077 };
00078 typedef struct _CBufferFromSTDIN* CBufferFromSTDIN;
00079
00080 struct _CBufferFrom {
00081
00082 char* buffer;
00083 Size size;
00084 Size current_size;
00085 Position pos;
00086 };
00087 typedef struct _CBufferFrom* CBufferFrom;
00088
00089 enum _BufferType {BufferTypeString, BufferTypeFD, BufferTypeSTDIN};
00090 typedef enum _BufferType BufferType;
00091
00092 typedef void* Buffer;
00093
00094 struct _CBuffer {
00095
00096 BufferType btype;
00097 Buffer buffer;
00098 };
00099
00100
00101 typedef struct _CBuffer* CBuffer;
00102
00103 Result GetChar (CBuffer);
00104 Bool HasItEof (const Result);
00105 char GetCharFromResult (const Result);
00106
00112 CBuffer InitCBufferFromFD (const FD);
00113
00115 CBuffer InitCBufferFromString (const CString);
00116
00118 CBuffer InitCBufferFromSTDIN ();
00119
00121 void DestroyCBuffer (CBuffer);
00124 #ifdef __cplusplus
00125 }
00126 #endif
00127 #endif