/[cvs]/api/Classes/Binary/BinaryInput.cpp
ViewVC logotype

Annotation of /api/Classes/Binary/BinaryInput.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (hide annotations) (vendor branch)
Sun Jul 1 20:47:58 2001 UTC (23 years ago) by bearsoft
Branch: lazy, MAIN
CVS Tags: start, HEAD
Changes since 1.1: +0 -0 lines
First import

1 bearsoft 1.1 #include "BinaryInput.h"
2     #include "../System/System.h"
3    
4    
5     BinaryInput::BinaryInput()
6     {
7     internBuffer=0;
8     sourceBuffer=0;
9     endBuffer=0;
10     fileSize=0;
11     scanBinaryStatus=true;
12     wordBuffer=0;
13     bigEndian=false;
14     fileStatus=0;
15     charCounter=0;
16     fileTools = new FileTools();
17     stringTools = new StringTools();
18     }
19    
20     BinaryInput::~BinaryInput()
21     {
22     if (internBuffer != 0 )
23     {
24     free(internBuffer);
25     internBuffer=0;
26     }
27    
28     if (wordBuffer != 0 )
29     {
30     free(wordBuffer);
31     wordBuffer=0;
32     }
33    
34     if (fileTools!=null)
35     {
36     delete fileTools;
37     }
38    
39     if (stringTools!=null)
40     {
41     delete stringTools;
42     }
43     }
44    
45     // internBuffer=the start of the ascii buffer
46     // sourceBuffer=where the pointer is in the internBuffer
47     // endBuffer=the end of the internBuffer
48    
49     //////////////////////////////////////////////////////////////////////////////////////
50     //read a ascii file
51     //////////////////////////////////////////////////////////////////////////////////////
52    
53     void BinaryInput::readFile(const String & string)
54     {
55     readFile(string.buffer);
56     }
57    
58    
59     void BinaryInput::readFile(char *filename)
60     {
61     if ( internBuffer != 0 )
62     {
63     free(internBuffer);
64     internBuffer=0;
65     }
66    
67     int fileBuffer=0;
68    
69     FileTools fileTools;
70    
71     fileStatus=fileTools.readStringFile(filename,&fileBuffer,&fileSize);
72    
73     internBuffer=(char*)fileBuffer;
74     sourceBuffer=(char*)internBuffer;
75     endBuffer=(char*)internBuffer;
76     endBuffer+=fileSize;
77     scanBinaryStatus=true;
78     }
79    
80     //////////////////////////////////////////////////////////////////////////////////////
81     //can i read more words??
82     //////////////////////////////////////////////////////////////////////////////////////
83    
84     bool BinaryInput::getScanBinaryStatus()
85     {
86     return scanBinaryStatus;
87     }
88    
89    
90     //////////////////////////////////////////////////////////////////////////////////////
91     //set a String to the InternBuffer
92     //////////////////////////////////////////////////////////////////////////////////////
93    
94     void BinaryInput::setInternBuffer(char *iInternBuffer, int size)
95     {
96     if ( iInternBuffer != 0 )
97     {
98     if ( internBuffer != 0 )
99     {
100     free(internBuffer);
101     internBuffer=0;
102     }
103    
104     internBuffer=iInternBuffer;
105     fileSize=size;
106     sourceBuffer=(char*)internBuffer;
107     endBuffer=(char*)internBuffer;
108     endBuffer+=fileSize;
109     scanBinaryStatus=true;
110     }
111     }
112    
113     //////////////////////////////////////////////////////////////////////////////////////
114     //takes the start address from the internBuffer and copy its to the sourcebuffer pointer
115     //////////////////////////////////////////////////////////////////////////////////////
116    
117     void BinaryInput::resetScanWord()
118     {
119     sourceBuffer=internBuffer;
120     scanBinaryStatus=true;
121     }
122    
123     char *BinaryInput::getWord(int size)
124     {
125     binaryStatus=false;
126    
127     if (wordBuffer!=0)
128     {
129     free(wordBuffer);
130     wordBuffer=0;
131     }
132    
133     if ((sourceBuffer >= internBuffer) && ((sourceBuffer+size) < endBuffer) )
134     {
135     binaryStatus=true;
136    
137     wordBuffer=(char*)malloc(sizeof(char)*size+sizeof(char));
138    
139     stringTools->copyString(sourceBuffer, size, wordBuffer);
140    
141     sourceBuffer+=size;
142     charCounter+=size;
143     }
144    
145     return wordBuffer;
146     }
147    
148     char *BinaryInput::getWord()
149     {
150     binaryStatus=false;
151    
152     if (wordBuffer!=0)
153     {
154     free(wordBuffer);
155     wordBuffer=0;
156     }
157    
158     if ((sourceBuffer >= internBuffer) && ((sourceBuffer+sizeof(char)) <= endBuffer) )
159     {
160     binaryStatus=true;
161    
162     int size=stringTools->sizeOfString(sourceBuffer, endBuffer);
163    
164     wordBuffer=(char*)malloc(sizeof(char)*size);
165    
166     stringTools->copyString(sourceBuffer, (size-1), wordBuffer);
167    
168     sourceBuffer+=size;
169     charCounter+=size;
170     }
171    
172     return wordBuffer;
173     }
174    
175     char BinaryInput::getChar()
176     {
177     binaryStatus=false;
178     char charValue=0;
179    
180     if ((sourceBuffer >= internBuffer) && ((sourceBuffer+sizeof(char)) <= endBuffer))
181     {
182     binaryStatus=true;
183     charValue=sourceBuffer[0];
184     sourceBuffer++;
185     charCounter++;
186     }
187    
188     return charValue;
189     }
190    
191    
192     short BinaryInput::getShortButGoNotFoward()
193     {
194     short shortValue=getShort();
195    
196     if (binaryStatus)
197     {
198     sourceBuffer-=sizeof(short);
199     charCounter-=sizeof(short);
200     }
201    
202     return shortValue;
203     }
204    
205     short BinaryInput::getShort()
206     {
207     binaryStatus=false;
208     short shortValue=0;
209    
210     if ((sourceBuffer >= internBuffer) && ((sourceBuffer+sizeof(short)) <= endBuffer))
211     {
212     binaryStatus=true;
213    
214     if (bigEndian)
215     {
216     char *shortPointer=(char*)&shortValue;
217    
218     shortPointer[1]=sourceBuffer[0];
219     sourceBuffer++;
220     shortPointer[0]=sourceBuffer[0];
221     sourceBuffer++;
222     charCounter+=sizeof(short);
223     }
224     else
225     {
226     short *shortPointer=(short*)&shortValue;
227     short *shortSourceBuffer=(short*)sourceBuffer;
228     shortPointer[0]=shortSourceBuffer[0];
229     sourceBuffer+=sizeof(short);
230     charCounter+=sizeof(short);
231     }
232     }
233    
234     return shortValue;
235     }
236    
237     int BinaryInput::getInt()
238     {
239     binaryStatus=false;
240     int intValue=0;
241    
242     if ((sourceBuffer >= internBuffer) && ((sourceBuffer+sizeof(int)) <= endBuffer))
243     {
244     binaryStatus=true;
245    
246     if (bigEndian)
247     {
248     char *intPointer=(char*)&intValue;
249    
250     intPointer[3]=sourceBuffer[0];
251     sourceBuffer++;
252     intPointer[2]=sourceBuffer[0];
253     sourceBuffer++;
254     intPointer[1]=sourceBuffer[0];
255     sourceBuffer++;
256     intPointer[0]=sourceBuffer[0];
257     sourceBuffer++;
258     charCounter+=sizeof(int);
259     }
260     else
261     {
262     int *intPointer=(int*)&intValue;
263     int *intSourceBuffer=(int*)sourceBuffer;
264     intPointer[0]=intSourceBuffer[0];
265     sourceBuffer+=sizeof(int);
266     charCounter+=sizeof(int);
267     }
268     }
269    
270     return intValue;
271     }
272    
273    
274     float BinaryInput::getFloat()
275     {
276     binaryStatus=false;
277     float floatValue=0;
278    
279     if (((sourceBuffer+sizeof(float)) >= internBuffer) && ((sourceBuffer+sizeof(float)) <= endBuffer))
280     {
281     binaryStatus=true;
282    
283     if (bigEndian)
284     {
285     char *floatPointer=(char*)&floatValue;
286    
287     floatPointer[3]=sourceBuffer[0];
288     sourceBuffer++;
289     floatPointer[2]=sourceBuffer[0];
290     sourceBuffer++;
291     floatPointer[1]=sourceBuffer[0];
292     sourceBuffer++;
293     floatPointer[0]=sourceBuffer[0];
294     sourceBuffer++;
295     charCounter+=sizeof(float);
296     }
297     else
298     {
299     float *floatPointer=(float*)&floatValue;
300     float *floatSourceBuffer=(float*)sourceBuffer;
301     floatPointer[0]=floatSourceBuffer[0];
302     sourceBuffer+=sizeof(float);
303     charCounter+=sizeof(float);
304     }
305     }
306    
307     return floatValue;
308     }
309    
310     void BinaryInput::setBigEndian(bool bigEndian)
311     {
312     this->bigEndian=bigEndian;
313     }
314    
315     bool BinaryInput::getBinaryStatus()
316     {
317     return binaryStatus;
318     }
319    
320     bool BinaryInput::jumpForward(int jumpValue)
321     {
322     binaryStatus=false;
323    
324     if (jumpValue!=0)
325     {
326     if ( (sourceBuffer+jumpValue) <= endBuffer )
327     {
328     binaryStatus=true;
329     sourceBuffer+=jumpValue;
330     charCounter+=jumpValue;
331     }
332     }
333    
334     return binaryStatus;
335     }
336    
337     char *BinaryInput::getInternBuffer()
338     {
339     return internBuffer;
340     }
341    
342     int BinaryInput::getInternBufferSize()
343     {
344     return fileSize;
345     }
346    
347     int BinaryInput::getFileStatus()
348     {
349     return fileStatus;
350     }
351    
352     int BinaryInput::socketSend(int socket)
353     {
354     NetWorkTools *netWorkTools = new NetWorkTools();
355     int status=0;
356    
357     if (internBuffer!=null)
358     {
359     status=netWorkTools->sendData(socket,internBuffer,fileSize);
360     }
361    
362     delete netWorkTools;
363    
364     return status;
365     }
366    
367     void BinaryInput::setInternBufferPosition(int position)
368     {
369     binaryStatus=false;
370    
371     if ( ((internBuffer+position) >= internBuffer) && ((internBuffer+position) <= endBuffer))
372     {
373     sourceBuffer=internBuffer+position;
374     binaryStatus=true;
375     }
376     }
377    
378     void BinaryInput::resetCharCounter()
379     {
380     charCounter=0;
381     }
382    
383     int BinaryInput::getCharCounter()
384     {
385     return charCounter;
386     }

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26