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
00031 #ifndef __cbuffer__h__
00032 #define __cbuffer__h__
00033
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037
00038 typedef size_t Position;
00039 typedef size_t Size;
00040 typedef FILE* FD;
00041
00042 enum _TypeResult {TypeResultEOF, TypeResultNORMAL};
00043 typedef enum _TypeResult TypeResult;
00044
00045 struct _Result {
00046
00047 TypeResult type;
00048 char ch;
00049 };
00050 typedef struct _Result Result;
00051
00052 struct _CBufferFromString {
00053
00054 CString string;
00055 Size size;
00056 Position pos;
00057 };
00058 typedef struct _CBufferFromString* CBufferFromString;
00059
00060 struct _CBufferFromFD {
00061
00062 char* buffer;
00063 Size size;
00064 Size current_size;
00065 Position pos;
00066 FD fd;
00067 };
00068 typedef struct _CBufferFromFD* CBufferFromFD;
00069
00070 struct _CBufferFromSTDIN {
00071
00072 char* buffer;
00073 Size size;
00074 Size current_size;
00075 Position pos;
00076 };
00077 typedef struct _CBufferFromSTDIN* CBufferFromSTDIN;
00078
00079 struct _CBufferFrom {
00080
00081 char* buffer;
00082 Size size;
00083 Size current_size;
00084 Position pos;
00085 };
00086 typedef struct _CBufferFrom* CBufferFrom;
00087
00088 enum _BufferType {BufferTypeString, BufferTypeFD, BufferTypeSTDIN};
00089 typedef enum _BufferType BufferType;
00090
00091 typedef void* Buffer;
00092
00093 struct _CBuffer {
00094
00095 BufferType btype;
00096 Buffer buffer;
00097 };
00098
00099
00100 typedef struct _CBuffer* CBuffer;
00101
00102 Result GetChar (CBuffer);
00103 Bool HasItEof (const Result);
00104 char GetCharFromResult (const Result);
00105
00111 CBuffer InitCBufferFromFD (const FD);
00112
00114 CBuffer InitCBufferFromString (const CString);
00115
00117 CBuffer InitCBufferFromSTDIN ();
00118
00120 void DestroyCBuffer (CBuffer);
00123 #ifdef __cplusplus
00124 }
00125 #endif
00126 #endif