| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-04-22 21:33:47 +0200 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-04-22 21:33:47 +0200 | 
| commit | 1d32728b9712702c9bca90d6dac370ff5fe2c214 (patch) | |
| tree | 25755963d66e842490eb4d4be8094b7674a85ae0 /src/knowledge/knowledge_finalize.c | |
Initial Commit
Diffstat (limited to 'src/knowledge/knowledge_finalize.c')
| -rw-r--r-- | src/knowledge/knowledge_finalize.c | 122 | 
1 files changed, 122 insertions, 0 deletions
| diff --git a/src/knowledge/knowledge_finalize.c b/src/knowledge/knowledge_finalize.c new file mode 100644 index 0000000..8020b9a --- /dev/null +++ b/src/knowledge/knowledge_finalize.c @@ -0,0 +1,122 @@ +#include <stdlib.h> + +#include "knowledge.h" + +/*@ +   requires \valid(sd); +@*/ +static void knowledge_sequence_data_finalize +( +   struct JH_knowledge_sequence_data sd [const restrict static 1] +) +{ +   sd->occurrences = 0; + +   if (sd->targets != (struct JH_knowledge_target *) NULL) +   { +      free((void *) sd->targets); + +      sd->targets = (struct JH_knowledge_target *) NULL; +   } + +   sd->targets_length = 0; + +} + +static void knowledge_sequence_collection_finalize +( +   struct JH_knowledge_sequence_collection c [const restrict static 1] +) +{ +   JH_index i; + +   for (i = 0; i < c->sequences_ref_length; ++i) +   { +      knowledge_sequence_data_finalize(c->sequences_ref + i); +   } + +   if (c->sequences_ref != (struct JH_knowledge_sequence_data *) NULL) +   { +      free((void *) c->sequences_ref); + +      c->sequences_ref = (struct JH_knowledge_sequence_data *) NULL; +   } + +   if (c->sequences_ref_sorted != (JH_index *) NULL) +   { +      free((void *) c->sequences_ref_sorted); + +      c->sequences_ref_sorted = (JH_index *) NULL; +   } + +   c->sequences_ref_length = 0; +} + +static void knowledge_word_finalize +( +   struct JH_knowledge_word w [const restrict static 1] +) +{ +   w->word_length = 0; +   w->occurrences = 0; + +   if (w->word != (JH_char *) NULL) +   { +      free((void *) w->word); + +      w->word = (JH_char *) NULL; +   } + +   knowledge_sequence_collection_finalize(&(w->swt)); +   knowledge_sequence_collection_finalize(&(w->tws)); +} + +/* See: "knowledge.h" */ +void JH_knowledge_finalize (struct JH_knowledge k [const restrict static 1]) +{ +   JH_index i; + +   for (i = 0; i < k->words_length; ++i) +   { +      knowledge_word_finalize(k->words + i); +   } + +   k->words_length = 0; + +   if (k->words != (struct JH_knowledge_word *) NULL) +   { +      free((void *) k->words); + +      k->words = (struct JH_knowledge_word *) NULL; +   } + +   if (k->words_sorted != (JH_index *) NULL) +   { +      free((void *) k->words_sorted); + +      k->words_sorted = (JH_index *) NULL; +   } + +   for (i = 0; i < k->sequences_length; ++i) +   { +      free((void *) k->sequences[i]); +   } + +   k->sequences_length = 0; + +   if (k->sequences != (JH_index **) NULL) +   { +      free((void *) k->sequences); + +      k->sequences = (JH_index **) NULL; +   } + +   if (k->sequences_sorted != (JH_index *) NULL) +   { +      free((void *) k->sequences_sorted); + +      k->sequences_sorted = (JH_index *) NULL; +   } + +   pthread_mutex_destroy(&(k->mutex)); +} | 


