#include "tmresult.h" #include "tmassert.h" #include "tmtrace.h" void tm_result_delete(TMResult *pself) { TMResult self; TMPool pool; TM_ENTER; assert(pself && *pself); self = *pself; pool = self->pool; switch(self->type) { case TM_RESULT_TOPICMAP: tm_topicmap_close(self->topicmap); tm_topicmap_delete(&(self->topicmap)); break; case TM_RESULT_SUBJECTS: { int i; for(i=0;insubjects;i++) { int j; TMSubject sbj = &(self->subjects[i]); for(j=0;jN;j++) { tm_value_delete(pool,sbj->props[j].prop->value_type, &(sbj->props[j].value)); } } if(self->nsubjects > 0) { TM_FREE(pool,self->subjects); TM_FREE(pool,self->topics); } break;} case TM_RESULT_TABLE: return; assert(0); break; default: assert(0); } TM_FREE(pool,self); *pself = NULL; TM_EXIT; }