HuntnGather – Diff between revs 19 and 31

Subversion Repositories:
Rev:
Show entire fileIgnore whitespace
Rev 19 Rev 31
Line 13... Line 13...
13 // - size // 13 // - size //
14 // - print // 14 // - print //
15 // // 15 // //
16 /////////////////////////////////////////////////////////////////////////// 16 ///////////////////////////////////////////////////////////////////////////
Line -... Line 17...
-   17  
-   18 #if defined MWDEBUG
-   19 #include "memwatch.h"
Line 17... Line 20...
17   20 #endif
18   21  
19 #include <stdio.h> 22 #include <stdio.h>
20 #include <stdlib.h> 23 #include <stdlib.h>
Line 28... Line 31...
28   31  
29 /* 32 /*
30 * Creates a new stringStack with a given size. 33 * Creates a new stringStack with a given size.
31 */ 34 */
-   35 stringStack* stringStackCreate(unsigned int size) {
32 stringStack* stringStackCreate(unsigned int size) { 36 stringStack *s;
33 stringStack *s = (stringStack*)malloc(sizeof(stringStack)); 37 s = malloc(sizeof(*s));
34 if ((s->store = (char**)malloc(size * sizeof(*s->store))) == NULL) 38 if ((s->store = malloc(size * sizeof(*s->store))) == NULL)
35 return NULL; 39 return NULL;
36 s->size = size; 40 s->size = size;
37 s->top = 0; 41 s->top = 0;
38 return s; 42 return s;
Line 50... Line 54...
50 /* 54 /*
51 * Pushes an element onto the stringStack. 55 * Pushes an element onto the stringStack.
52 */ 56 */
53 void stringStackPush(stringStack *s, char *e) { 57 void stringStackPush(stringStack *s, char *e) {
54 if (s->top > s->size - 1) 58 if (s->top > s->size - 1)
55 s->store = (char**)realloc(s->store, ++s->size * sizeof(*s->store)); 59 s->store = realloc(s->store, ++s->size * sizeof(*s->store));
56 s->store[s->top] = (char*)malloc((strlen(e) + 1) * sizeof(*s->store[s->top])); 60 s->store[s->top] = malloc((strlen(e) + 1) * sizeof(*s->store[s->top]));
57 strncpy(s->store[s->top], e, strlen(e) + 1); 61 strncpy(s->store[s->top], e, strlen(e) + 1);
58 ++s->top; 62 ++s->top;
59 } 63 }
Line 60... Line 64...
60   64  
Line 65... Line 69...
65 char *stringStackPop(stringStack *s) { 69 char *stringStackPop(stringStack *s) {
66 char *e; 70 char *e;
67 if (stringStackIsEmpty(s)) 71 if (stringStackIsEmpty(s))
68 return NULL; 72 return NULL;
69 --s->top; 73 --s->top;
70 e = (char *)malloc((strlen(s->store[s->top]) + 1) * sizeof(*e)); 74 e = malloc((strlen(s->store[s->top]) + 1) * sizeof(*e));
71 strncpy(e, s->store[s->top], strlen(s->store[s->top]) + 1); 75 strncpy(e, s->store[s->top], strlen(s->store[s->top]) + 1);
72 free(s->store[s->top]); 76 free(s->store[s->top]);
73 return e; 77 return e;
74 } 78 }
Line 75... Line 79...
75   79  
76 /* 80 /*
77 * Delete a stringStack. 81 * Delete a stringStack.
78 */ 82 */
-   83 void stringStackDestroy(stringStack *s) {
79 void stringStackDestroy(stringStack *s) { 84 char *e;
80 while(!stringStackIsEmpty(s)) { 85 while(!stringStackIsEmpty(s)) {
-   86 e = stringStackPop(s);
81 stringStackPop(s); 87 free(e);
82 } 88 }
83 free(s); 89 free(s);
Line 84... Line 90...
84 } 90 }