| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-01-08 17:58:18 +0100 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-01-08 17:58:18 +0100 |
| commit | 24afb3e60bafd98e6a83dcb41ee6a7f7d41e76bc (patch) | |
| tree | b122cf23d4cb912f4c4418a1b9d60f475414839d /src/core/knowledge_finalize.c | |
| parent | 492b9cd1ecc234ea8f3080b305103702d2ca772b (diff) | |
Continuing the 'knowledge' refactoring.
Diffstat (limited to 'src/core/knowledge_finalize.c')
| -rw-r--r-- | src/core/knowledge_finalize.c | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/src/core/knowledge_finalize.c b/src/core/knowledge_finalize.c new file mode 100644 index 0000000..e4deda6 --- /dev/null +++ b/src/core/knowledge_finalize.c @@ -0,0 +1,121 @@ +#include <stdlib.h> +#include <string.h> +#include <stdint.h> /* defines SIZE_MAX */ + +#include "../io/error.h" + +#include "knowledge.h" + +void knowledge_sequence_collection_finalize +( + struct ZoO_knowledge_sequence_collection c [const restrict static 1] +) +{ + ZoO_index i; + + if (c->sequences_ref != (ZoO_index *) NULL) + { + free((void *) c->sequences_ref); + c->sequences_ref = (ZoO_index *) NULL; + } + + if (c->sequences_ref_sorted != (ZoO_index *) NULL) + { + free((void *) c->sequences_ref_sorted); + c->sequences_ref_sorted = (ZoO_index *) NULL; + } + + if (c->occurrences != (ZoO_index *) NULL) + { + free((void *) c->occurrences); + c->occurrences = (ZoO_index *) NULL; + } + + for (i = 0; i < c->sequences_ref_length; ++i) + { + free((void *) c->targets[i]); + free((void *) c->targets_occurrences[i]); + } + + c->sequences_ref_length = 0; + + if (c->targets != (ZoO_index **) NULL) + { + free((void *) c->targets); + c->targets != (ZoO_index **) NULL; + } + + free((void *) c->targets_length); + + if (c->targets_occurrences != (ZoO_index **) NULL) + { + free((void *) c->targets_occurrences); + c->targets_occurrences != (ZoO_index **) NULL; + } +} + +void knowledge_word_finalize +( + struct ZoO_knowledge_word w [const restrict static 1] +) +{ + w->word_size = 0; + w->occurrences = 0; + + if (w->word != (ZoO_char *) NULL) + { + free((void *) w->word); + + w->word = (ZoO_char *) NULL; + } + + knowledge_sequence_collection_finalize(&(w->followed)); + knowledge_sequence_collection_finalize(&(w->preceded)); +} + +void ZoO_knowledge_finalize (struct ZoO_knowledge k [const restrict static 1]) +{ + ZoO_index i; + + for (i = 0; i < k->words_length; ++i) + { + knowledge_word_finalize(k->words + i); + } + + k->words_length = 0; + + if (k->words != (struct ZoO_knowledge_word *) NULL) + { + free((void *) k->words); + + k->words = (struct ZoO_knowledge_word *) NULL; + } + + if (k->words_sorted != (ZoO_index *) NULL) + { + free((void *) k->words_sorted); + + k->words_sorted = (ZoO_index *) NULL; + } + + for (i = 0; i < k->sequences_length; ++i) + { + free((void *) k->sequences[i]); + } + + k->sequences_length = 0; + + if (k->sequences != (ZoO_index **) NULL) + { + free((void *) k->sequences); + + k->sequences = (ZoO_index **) NULL; + } + + if (k->sequences_sorted != (ZoO_index *) NULL) + { + free((void *) k->sequences_sorted); + + k->sequences_sorted = (ZoO_index *) NULL; + } +} |


