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