|
| |||||||||||||
#include "mit-copyright.h"#include "port_dictionary.h"#include "new_string.h"#include "main.h"Go to the source code of this file.
Functions | |
| port_dictionary | port_dictionary_Create (int size) |
| void | port_dictionary_Destroy (port_dictionary d) |
| void | port_dictionary_Enumerate (port_dictionary d, void(*)() proc) |
| port_dictionary_binding * | port_dictionary_Lookup (port_dictionary d, char *key) |
| port_dictionary_binding * | port_dictionary_Define (port_dictionary d, char *key, int *already_existed) |
| void | port_dictionary_Delete (port_dictionary d, port_dictionary_binding *b) |
|
|
Definition at line 62 of file port_dictionary.c. References port_dictionary, port_dictionary_binding, _port_dictionary::size, and _port_dictionary::slots. 00064 {
00065 int i;
00066 port_dictionary result;
00067
00068 result = (port_dictionary) malloc(sizeof(struct _port_dictionary));
00069 result->size = size;
00070 result->slots = (port_dictionary_binding **) malloc(
00071 size * sizeof(port_dictionary_binding *));
00072
00073 for (i = 0; i < size; i++)
00074 result->slots[i] = NULL;
00075
00076 return (result);
00077 }
|
|
||||||||||||||||
|
Definition at line 207 of file port_dictionary.c. References _port_dictionary_binding::key, _port_dictionary_binding::next, port_dictionary, port_dictionary_binding, string_Copy, and string_Eq. 00211 {
00212 port_dictionary_binding **ptr_to_the_slot, *binding_ptr;
00213
00214 ptr_to_the_slot = &(d->slots[dictionary__hash(key) % (d->size)]);
00215
00216 binding_ptr = *ptr_to_the_slot;
00217 while (binding_ptr) {
00218 if (string_Eq(binding_ptr->key, key)) {
00219 if (already_existed)
00220 *already_existed = 1;
00221 return (binding_ptr);
00222 }
00223 binding_ptr = binding_ptr->next;
00224 }
00225
00226 if (already_existed)
00227 *already_existed = 0;
00228 binding_ptr = (port_dictionary_binding *) malloc(
00229 sizeof(port_dictionary_binding));
00230 binding_ptr->next = *ptr_to_the_slot;
00231 binding_ptr->key = string_Copy(key);
00232 *ptr_to_the_slot = binding_ptr;
00233 return (binding_ptr);
00234 }
|
|
||||||||||||
|
Definition at line 247 of file port_dictionary.c. References _port_dictionary_binding::key, _port_dictionary_binding::next, port_dictionary, and port_dictionary_binding. 00250 {
00251 port_dictionary_binding **ptr_to_binding_ptr;
00252
00253 ptr_to_binding_ptr = &(d->slots[dictionary__hash(b->key) % (d->size)]);
00254
00255 while (*ptr_to_binding_ptr != b)
00256 ptr_to_binding_ptr = &((*ptr_to_binding_ptr)->next);
00257
00258 *ptr_to_binding_ptr = b->next;
00259 free(b->key);
00260 free(b);
00261 }
|
|
|
Definition at line 91 of file port_dictionary.c. References _port_dictionary_binding::key, _port_dictionary_binding::next, port_dictionary, and port_dictionary_binding. 00093 {
00094 int i;
00095 port_dictionary_binding *binding_ptr, *new_binding_ptr;
00096
00097 for (i = 0; i < d->size; i++) {
00098 binding_ptr = d->slots[i];
00099 while (binding_ptr) {
00100 new_binding_ptr = binding_ptr->next;
00101 free(binding_ptr->key);
00102 free(binding_ptr);
00103 binding_ptr = new_binding_ptr;
00104 }
00105 }
00106 free(d->slots);
00107 free(d);
00108 }
|
|
||||||||||||
|
Definition at line 122 of file port_dictionary.c. References _port_dictionary_binding::next, port_dictionary, and port_dictionary_binding. 00125 {
00126 int i;
00127 port_dictionary_binding *binding_ptr;
00128
00129 for (i = 0; i < d->size; i++) {
00130 binding_ptr = d->slots[i];
00131 while (binding_ptr) {
00132 proc(binding_ptr);
00133 binding_ptr = binding_ptr->next;
00134 }
00135 }
00136 }
|
|
||||||||||||
|
Definition at line 174 of file port_dictionary.c. References _port_dictionary_binding::key, _port_dictionary_binding::next, port_dictionary, port_dictionary_binding, and string_Eq. 00177 {
00178 port_dictionary_binding *binding_ptr;
00179
00180 binding_ptr = d->slots[dictionary__hash(key) % (d->size)];
00181 while (binding_ptr) {
00182 if (string_Eq(key, binding_ptr->key))
00183 return (binding_ptr);
00184 binding_ptr = binding_ptr->next;
00185 }
00186
00187 return (NULL);
00188 }
|
| Last updated at Tue Dec 18 21:07:42 PST 2007. | This site and project hosted by... |