1 #ifdef _cplusplus
2 extern "C" {
3 #endif
4 #include "wisestreaminterface.h"
5
6
7
8 /* Function: read_buffer_FILE_impl(handle,input_buffer,maxsize)
9 *
10 * Descrip: Implementation function for normal files for reading
11 *
12 *
13 * Arg: handle [UNKN ] Undocumented argument [void *]
14 * Arg: input_buffer [UNKN ] Undocumented argument [char *]
15 * Arg: maxsize [UNKN ] Undocumented argument [int]
16 *
17 * Return [UNKN ] Undocumented return value [char *]
18 *
19 */
20 # line 40 "wisestreaminterface.dy"
read_buffer_FILE_impl(void * handle,char * input_buffer,int maxsize)21 char * read_buffer_FILE_impl(void * handle,char * input_buffer,int maxsize)
22 {
23 char * ret;
24 FILE * ifp = (FILE *)handle;
25
26 ret = fgets(input_buffer,maxsize,ifp);
27
28 return ret;
29 }
30
31 /* Function: is_end_FILE_impl(handle)
32 *
33 * Descrip: Implementation function for normal files for end flag
34 *
35 *
36 * Arg: handle [UNKN ] Undocumented argument [void *]
37 *
38 * Return [UNKN ] Undocumented return value [boolean]
39 *
40 */
41 # line 53 "wisestreaminterface.dy"
is_end_FILE_impl(void * handle)42 boolean is_end_FILE_impl(void * handle)
43 {
44 FILE * ifp = (FILE *)handle;
45
46 if( feof(ifp) ) {
47 return TRUE;
48 } else {
49 return FALSE;
50 }
51 }
52
53 /* Function: close_and_free_FILE_impl(handle)
54 *
55 * Descrip: Implementation function for normal files for closing. Works for both
56 * reading and writing
57 *
58 *
59 * Arg: handle [UNKN ] Undocumented argument [void *]
60 *
61 */
62 # line 68 "wisestreaminterface.dy"
close_and_free_FILE_impl(void * handle)63 void close_and_free_FILE_impl(void * handle)
64 {
65 FILE * ifp = (FILE *)handle;
66
67 fclose(ifp);
68 }
69
70 /* Function: ReadStream_from_FILE(ifp)
71 *
72 * Descrip: Makes a Wise2ReadStream interface from a normal C filehandle
73 *
74 *
75 * Arg: ifp [UNKN ] Undocumented argument [FILE *]
76 *
77 * Return [UNKN ] Undocumented return value [Wise2ReadStreamInterface *]
78 *
79 */
80 # line 78 "wisestreaminterface.dy"
ReadStream_from_FILE(FILE * ifp)81 Wise2ReadStreamInterface * ReadStream_from_FILE(FILE * ifp)
82 {
83 Wise2ReadStreamInterface * out;
84
85 out = malloc(sizeof(Wise2ReadStreamInterface));
86 out->read_buffer = read_buffer_FILE_impl;
87 out->is_end = is_end_FILE_impl;
88 out->close_and_free_handle = close_and_free_FILE_impl;
89 out->handle = (void*) ifp;
90
91 return out;
92 }
93
94 /* Function: ReadStream_openfile(filename)
95 *
96 * Descrip: opens a file from filename and gives back a ReadStream,
97 * NULL if unable to return
98 *
99 *
100 * Arg: filename [UNKN ] Undocumented argument [char *]
101 *
102 * Return [UNKN ] Undocumented return value [Wise2ReadStreamInterface *]
103 *
104 */
105 # line 95 "wisestreaminterface.dy"
ReadStream_openfile(char * filename)106 Wise2ReadStreamInterface * ReadStream_openfile(char * filename)
107 {
108 FILE * ifp;
109 assert(filename != NULL);
110
111 ifp = openfile(filename,"r");
112 if( ifp == NULL ) {
113 warn("Unable to open file %s",filename);
114 return NULL;
115 }
116
117 return ReadStream_from_FILE(ifp);
118 }
119
120
121 /* Function: write_buffer_FILE_impl(handle,string)
122 *
123 * Descrip: implementation for normal C files for string writing
124 *
125 *
126 * Arg: handle [UNKN ] Undocumented argument [void *]
127 * Arg: string [UNKN ] Undocumented argument [char *]
128 *
129 */
130 # line 113 "wisestreaminterface.dy"
write_buffer_FILE_impl(void * handle,char * string)131 void write_buffer_FILE_impl(void * handle,char * string)
132 {
133 FILE * ifp = (FILE *)handle;
134
135 fputs(string,ifp);
136
137 return;
138 }
139
140 /* Function: write_bufferf_FILE_impl(handle,format,)
141 *
142 * Descrip: implementation for normal C files for formatted writing
143 *
144 *
145 * Arg: handle [UNKN ] Undocumented argument [void *]
146 * Arg: format [UNKN ] Undocumented argument [char *]
147 * Arg: [UNKN ] Undocumented argument [.]
148 *
149 */
150 # line 125 "wisestreaminterface.dy"
write_bufferf_FILE_impl(void * handle,char * format,...)151 void write_bufferf_FILE_impl(void * handle,char * format,...)
152 {
153 FILE * ifp = (FILE *)handle;
154 char buffer[1024];
155 va_list ap;
156
157
158 va_start(ap,format);
159 vsprintf(buffer,format,ap);
160
161 fputs(buffer,ifp);
162
163 return;
164 }
165
166 /* Function: WriteStream_from_FILE(ofp)
167 *
168 * Descrip: makes a WriteStream from a normal C FILE structure
169 *
170 *
171 * Arg: ofp [UNKN ] Undocumented argument [FILE *]
172 *
173 * Return [UNKN ] Undocumented return value [Wise2WriteStreamInterface *]
174 *
175 */
176 # line 143 "wisestreaminterface.dy"
WriteStream_from_FILE(FILE * ofp)177 Wise2WriteStreamInterface * WriteStream_from_FILE(FILE * ofp)
178 {
179 Wise2WriteStreamInterface * out;
180
181 out = malloc(sizeof(Wise2WriteStreamInterface));
182 out->write_buffer = write_buffer_FILE_impl;
183 out->write_bufferf = write_bufferf_FILE_impl;
184 out->close_and_free_handle = close_and_free_FILE_impl;
185 out->handle = (void*) ofp;
186
187 return out;
188 }
189
190 /* Function: WriteStream_openfile(filename)
191 *
192 * Descrip: opens a file from filename and gives back a WriteStream,
193 * NULL if unable to return
194 *
195 *
196 * Arg: filename [UNKN ] Undocumented argument [char *]
197 *
198 * Return [UNKN ] Undocumented return value [Wise2WriteStreamInterface *]
199 *
200 */
201 # line 160 "wisestreaminterface.dy"
WriteStream_openfile(char * filename)202 Wise2WriteStreamInterface * WriteStream_openfile(char * filename)
203 {
204 FILE * ofp;
205 assert(filename != NULL);
206
207 ofp = openfile(filename,"w");
208 if( ofp == NULL ) {
209 warn("Unable to open file %s",filename);
210 return NULL;
211 }
212
213 return WriteStream_from_FILE(ofp);
214 }
215
216 /* Function: cat_ReadStream_into_WriteStream(rs,ws)
217 *
218 * Descrip: helper function - cats one stream into another
219 *
220 *
221 * Arg: rs [UNKN ] Undocumented argument [Wise2ReadStreamInterface *]
222 * Arg: ws [UNKN ] Undocumented argument [Wise2WriteStreamInterface *]
223 *
224 */
225 # line 177 "wisestreaminterface.dy"
cat_ReadStream_into_WriteStream(Wise2ReadStreamInterface * rs,Wise2WriteStreamInterface * ws)226 void cat_ReadStream_into_WriteStream(Wise2ReadStreamInterface * rs,Wise2WriteStreamInterface * ws)
227 {
228 char str[1024];
229
230 while( (*rs->is_end)(rs->handle) != TRUE ) {
231 if( (*rs->read_buffer)(rs->handle,str,1024) == NULL ) {
232 return;
233 }
234 (*ws->write_buffer)(ws->handle,str);
235 }
236
237
238 }
239
240
241 # line 220 "wisestreaminterface.c"
242
243 #ifdef _cplusplus
244 }
245 #endif
246