/[cvs]/api/Classes/String/StringTools.cpp
ViewVC logotype

Contents of /api/Classes/String/StringTools.cpp

Parent Directory Parent Directory | Revision Log Revision Log


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

1 #include "StringTools.h"
2 #include "../System/SystemDefine.h"
3 #include <iostream.h>
4
5
6 StringTools::StringTools()
7 {
8 }
9
10 StringTools::~StringTools()
11 {
12 }
13
14 //////////////////////////////////////////////////////////////////////////////////////
15 //compare two Strings against each other, without the null in the end of the Strings
16 //////////////////////////////////////////////////////////////////////////////////////
17
18 bool StringTools::compareString(char *source, char *source2)
19 {
20 bool statement=true;
21
22 if ( source != null && source2 != null )
23 {
24 int sizeSource=sizeOfString(source);
25 int sizeSource2=sizeOfString(source2);
26
27 if( sizeSource == sizeSource2 )
28 {
29 for ( int s=0; s<sizeSource ; s++ )
30 {
31 if ( source[s] != source2[s] )
32 {
33 statement=false;
34 break;
35 }
36 }
37 }
38 else
39 {
40 statement=false;
41 }
42 }
43 else
44 {
45 statement=false;
46 }
47
48 return statement;
49 }
50
51 //////////////////////////////////////////////////////////////////////////////////////
52 //compare two Strings against each other, without the null in the end of the Strings
53 //////////////////////////////////////////////////////////////////////////////////////
54
55 bool StringTools::compareString(char *source, int sizeSource, char *source2, int sizeSource2)
56 {
57 bool statement=true;
58
59 if ( source != null && source2 != null )
60 {
61 if( sizeSource == sizeSource2 )
62 {
63 for ( int s=0; s<sizeSource ; s++ )
64 {
65 if ( source[s] != source2[s] )
66 {
67 statement=false;
68 break;
69 }
70 }
71 }
72 else
73 {
74 statement=false;
75 }
76 }
77 else
78 {
79 statement=false;
80 }
81
82 return statement;
83 }
84
85 //////////////////////////////////////////////////////////////////////////////////////
86 //compare two Strings against each other, without the null in the end of the Strings
87 //////////////////////////////////////////////////////////////////////////////////////
88
89 bool StringTools::compareStringAPart(char *source, int sizeSource, char *source2, int sizeSource2)
90 {
91 bool statement=true;
92
93 if ( source != null && source2 != null )
94 {
95 if ( sizeSource != 0 )
96 {
97 --sizeSource;
98 }
99
100 if( sizeSource <= sizeSource2 )
101 {
102 for ( int s=0; s<sizeSource ; s++ )
103 {
104 if ( source[s] != source2[s] )
105 {
106 statement=false;
107 break;
108 }
109 }
110 }
111 else
112 {
113 statement=false;
114 }
115 }
116 else
117 {
118 statement=false;
119 }
120
121 return statement;
122 }
123
124 //////////////////////////////////////////////////////////////////////////////////////
125 //takes the size of a String include the null in the end
126 //////////////////////////////////////////////////////////////////////////////////////
127
128 int StringTools::sizeOfString(char *source)
129 {
130 int size=0;
131
132 while ( source[size] != 0 )
133 {
134 size++;
135 }
136
137 size++;
138
139 return size;
140 }
141
142 //////////////////////////////////////////////////////////////////////////////////////
143 //takes the size of a String includes not the null in the end
144 //////////////////////////////////////////////////////////////////////////////////////
145
146 int StringTools::sizeOfStringWithOutEndNull(char *source)
147 {
148 int size=0;
149
150 while ( source[size] != 0 )
151 {
152 size++;
153 }
154
155 return size;
156 }
157
158
159 //////////////////////////////////////////////////////////////////////////////////////
160 //takes the size of a String include the null in the end
161 //////////////////////////////////////////////////////////////////////////////////////
162
163 int StringTools::sizeOfString(char *source, char *endSource)
164 {
165 int size=0;
166
167 bool statement=true;
168
169 while (statement)
170 {
171 if (source < endSource)
172 {
173 if (source[0] != 0)
174 {
175 source++;
176 size++;
177 }
178 else
179 {
180 statement=false;
181 }
182 }
183 else
184 {
185 statement=false;
186 }
187 }
188
189 size++;
190
191 return size;
192 }
193
194
195 //////////////////////////////////////////////////////////////////////////////////////
196 //copy a String to another destination includes the null in the of the String
197 //////////////////////////////////////////////////////////////////////////////////////
198
199 void StringTools::copyString(char *source, char *dest)
200 {
201 int size=sizeOfString(source);
202
203 int s;
204
205 for ( s=0; s<(size-1) ; s++ )
206 {
207 dest[s]=source[s];
208 }
209
210 dest[s]=0;
211 }
212
213 //////////////////////////////////////////////////////////////////////////////////////
214 //copy a String to another destination includes the null in the of the String
215 //////////////////////////////////////////////////////////////////////////////////////
216
217 void StringTools::copyString(char *source, int sourceSize, char *dest)
218 {
219
220 /* int size=sourceSize/4;
221 int rest=sourceSize%4;
222
223 int *intSource=(int*)source;
224 int *intDest=(int*)dest;
225
226 for ( int i=0; i<size ; i++ )
227 {
228 intDest[0]=intSource[0];
229 intDest++;
230 intSource++;
231 }
232
233 source=(char*)intSource;
234 dest=(char*)intDest;
235
236 for (int s=0; s<rest ; s++ )
237 {
238 dest[0]=source[0];
239 dest++;
240 source++;
241 }
242 */
243
244 for (int s=0; s<sourceSize ; s++ )
245 {
246 dest[0]=source[0];
247 dest++;
248 source++;
249 }
250
251 dest[0]=0;
252 }
253
254
255
256 //////////////////////////////////////////////////////////////////////////////////////
257 //add two Strings together and returns a new String
258 //////////////////////////////////////////////////////////////////////////////////////
259
260 char *StringTools::addStringTwoString(char *source, char *source2)
261 {
262 int forward=0;
263
264 int sourceSize=sizeOfString(source)-1;
265 int source2Size=sizeOfString(source2);
266
267 char *buffer=(char*)malloc(sourceSize+source2Size);
268
269 for ( int s=0 ; s<sourceSize ; s++ )
270 {
271 buffer[forward]=source[s];
272 forward++;
273 }
274
275 for ( int s2=0 ; s2<source2Size ; s2++ )
276 {
277 buffer[forward]=source2[s2];
278 forward++;
279 }
280
281 return buffer;
282 }
283
284 //////////////////////////////////////////////////////////////////////////////////////
285 //add two Strings together and returns a new String
286 //////////////////////////////////////////////////////////////////////////////////////
287
288 char *StringTools::addStringTwoString(char *source, int sourceSize, char *source2, int sourceSize2)
289 {
290 int forward=0;
291
292 sourceSize2++;
293
294 char *buffer=(char*)malloc(sourceSize+sourceSize2);
295
296 for ( int s=0 ; s<sourceSize ; s++ )
297 {
298 buffer[forward]=source[s];
299 forward++;
300 }
301
302 for ( int s2=0 ; s2<(sourceSize2) ; s2++ )
303 {
304 buffer[forward]=source2[s2];
305 forward++;
306 }
307
308 return buffer;
309 }
310
311
312 //////////////////////////////////////////////////////////////////////////////////////
313 //compare two Strings against each other, without the null in the end of the Strings
314 //////////////////////////////////////////////////////////////////////////////////////
315
316 bool StringTools::isStringSmaller(char *source, int sourceSize, char *source2, int sourceSize2)
317 {
318 bool statement=true;
319 bool equalStatement=true;
320 int size=0;
321
322 if (sourceSize<sourceSize2)
323 {
324 size=sourceSize2;
325 }
326 else
327 {
328 size=sourceSize;
329 }
330
331 // --size;
332
333 for ( int r=0; r<size ; r++ )
334 {
335 if ( source[r] < source2[r] )
336 {
337 statement=false;
338
339 if ( source[r] != source2[r] )
340 {
341 equalStatement=false;
342 }
343
344 break;
345 }
346 else
347 {
348 if ( source[r] != source2[r] )
349 {
350 equalStatement=false;
351 break;
352 }
353 }
354
355 if ( source[r] != source2[r] )
356 {
357 equalStatement=false;
358 }
359
360 }
361
362 if (equalStatement == true)
363 {
364 if (sourceSize > sourceSize2 )
365 {
366 statement=false;
367 }
368 }
369
370 return statement;
371 }
372
373 bool StringTools::isStringLarger(char *source, int sourceSize, char *source2, int sourceSize2)
374 {
375 return isStringSmaller(source2, sourceSize2, source, sourceSize);
376 }
377
378
379 //////////////////////////////////////////////////////////////////////////////////////
380 //compare two Strings against each other, without the null in the end of the Strings
381 //////////////////////////////////////////////////////////////////////////////////////
382
383 bool StringTools::isStringValueSmaller(char *source, int sourceSize, char *source2, int sourceSize2)
384 {
385 bool statement=true;
386 bool equalStatement=true;
387
388 if (sourceSize<sourceSize2)
389 {
390 return true;
391 }
392
393 if (sourceSize>sourceSize2)
394 {
395 return false;
396 }
397
398 for ( int r=0; r<sourceSize ; r++ )
399 {
400 if ( source[r] < source2[r] )
401 {
402 return true;
403 }
404 }
405
406 return false;
407 }
408
409 bool StringTools::isStringValueLarger(char *source, int sourceSize, char *source2, int sourceSize2)
410 {
411 return isStringValueSmaller(source2, sourceSize2, source, sourceSize);
412 }
413
414 //////////////////////////////////////////////////////////////////////////////////////
415 //find a chareter , seeking back, returning the position on it
416 //////////////////////////////////////////////////////////////////////////////////////
417
418 int StringTools::backFind(char *source, char target)
419 {
420 int size=sizeOfString(source)-1;
421
422 int position=size;
423
424 while ( position >= 0 && source[position] != target )
425 {
426 --position;
427 }
428
429 return position;
430 }
431
432
433 //////////////////////////////////////////////////////////////////////////////////////
434 //it seeks back and when it find the character it is looking for it takes the data that is forward and returns it
435 //////////////////////////////////////////////////////////////////////////////////////
436
437 char *StringTools::cutTheBack(char * word, int *length, char target)
438 {
439 if (word != null)
440 {
441 int position=backFind(word,target);
442
443 //cout << position << endl;
444
445 if (position >= 0)
446 {
447 char *tempWord=word;
448 word+=position+1;
449
450 int size=sizeOfStringWithOutEndNull(word);
451 length[0]=size;
452 if (size>0)
453 {
454 char *tempWord2=(char*)malloc(size*sizeof(char)+sizeof(char));
455 copyString(word,tempWord2);
456 word=tempWord2;
457 free(tempWord);
458 }
459 else
460 {
461 free(tempWord);
462 word=null;
463 length[0]=0;
464 }
465 }
466 else
467 {
468 free(word);
469 word=null;
470 length[0]=0;
471 }
472 }
473
474 return word;
475 }
476
477 char *StringTools::cutTheBegining(char * word, int *length, char target)
478 {
479 if ( word != null )
480 {
481 int position=backFind(word,target);
482
483 //cout << position << endl;
484
485 if (position >= 0)
486 {
487 word[position]=0;
488 length[0]=sizeOfStringWithOutEndNull(word);
489 }
490 else
491 {
492 if(word!=null)
493 {
494 free(word);
495 word=null;
496 length[0]=0;
497 }
498 }
499 }
500
501 return word;
502 }
503
504 bool StringTools::checkBack(char *file, int fileSize, char *fileFormat, int fileFormatSize)
505 {
506 if ( fileFormatSize <= fileSize)
507 {
508 fileSize-=fileFormatSize;
509 return compareString((file+fileSize), fileFormatSize, fileFormat, fileFormatSize);
510 }
511
512 return false;
513 }
514
515
516 bool StringTools::checkFront(char *file, int fileSize, char *fileFormat, int fileFormatSize)
517 {
518 if ( fileFormatSize <= fileSize)
519 {
520 return compareString(file, fileFormatSize, fileFormat, fileFormatSize);
521 }
522
523 return false;
524 }
525
526 bool StringTools::theFilePathIsNotUnder(char *buffer, int length, char *filePath, int filePathLength)
527 {
528 length++;
529 filePathLength++;
530
531 char *tempBuffer=(char*)malloc(length*sizeof(char));
532 copyString(buffer,tempBuffer);
533
534 char *backPath="/../";
535 int backPathSize=5;
536
537 int i=0;
538
539 while(tempBuffer[i]!=0)
540 {
541 if( tempBuffer[i] == backPath[0] || (tempBuffer[i] == backPath[1] && i == 0))
542 {
543 int stepForward=0;
544
545 if ((tempBuffer[i] == backPath[1] && i == 0))
546 {
547 stepForward=1;
548 }
549
550 bool correct=true;
551
552 if ( (i+backPathSize) <= length)
553 {
554 for ( int b=0; b<(backPathSize-1-stepForward) ; b++ )
555 {
556 if (backPath[b+stepForward] != tempBuffer[i+b])
557 {
558 correct=false;
559 break;
560 }
561 }
562 }
563 else
564 {
565 correct=false;
566 }
567
568 if(correct)
569 {
570 int lastPosition=0;
571 int position=i-1;
572
573 if ( position >= 0 )
574 {
575 for ( int k=0; k<(i-1) ; k++ )
576 {
577 if ( tempBuffer[position] == backPath[0] )
578 {
579 lastPosition=position;
580 break;
581 }
582 --position;
583 }
584 }
585 else
586 {
587 lastPosition=0;
588 }
589
590
591 moveBack(tempBuffer, lastPosition, i+(backPathSize-3-stepForward), length);
592 i=lastPosition-1;
593
594 if ( i < -1 )
595 {
596 i=-1;
597 }
598 }
599
600 }
601 i++;
602 }
603
604
605 char *memTemp=tempBuffer;
606
607 if ( tempBuffer[0] == '/' )
608 {
609 tempBuffer++;
610 }
611
612 cout << tempBuffer << endl;
613
614 int tempBufferLength=sizeOfString(tempBuffer);
615
616 bool status=compareStringAPart(filePath, filePathLength,tempBuffer, tempBufferLength);
617
618 free(memTemp);
619
620 return status;
621 }
622
623 void StringTools::moveBack(char *tempBuffer, int forward, int howLong, int length)
624 {
625 howLong++;
626 int kSize=0;
627
628 if ( howLong < length )
629 {
630 int k=howLong;
631
632 while ( tempBuffer[k] != 0 )
633 {
634 kSize++;
635 k++;
636 }
637
638 kSize++;
639
640 int l;
641
642 for ( l=0; l<kSize ; l++ )
643 {
644 tempBuffer[forward+l]=tempBuffer[l+howLong];
645 }
646
647
648 kSize+=forward;
649 tempBuffer[kSize]=0;
650 }
651 }

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26