HuntnGather – Diff between revs 19 and 31
?pathlinks?
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 | } |