AttrList new_AttrList(void){ AttrList newList = INVALID_ATTRLIST; int i; if(!poolInitialized) initPool(); if(poolUsed == (poolSize - 1)) growPool(); newList = getNewID(); if(newList != INVALID_ATTRLIST){ for(i = 0; i < poolSize; ++i){ if(attrListPool[i].id == INVALID_ATTRLIST){ break; } } attrListPool[i].id = newList; if(attrListPool[i].data != NULL){ gcFree(attrListPool[i].data); } if(attrListPool[i].keys != NULL){ gcFree(attrListPool[i].keys); } attrListPool[i].size = 0; attrListPool[i].keys = NULL; attrListPool[i].data = NULL; poolUsed++; } return newList; }
void recursive_Node_Delete(struct_BTree_Node node){ if(!node) return; if(node->left != NULL) recursive_Node_Delete(node->left); if(node->right != NULL) recursive_Node_Delete(node->right); gcFree(node->data); gcFree(node); }
void deletePool(void){ int i; if(attrListPool != NULL){ for(i = 0; i < poolSize; ++i){ if(attrListPool[i].data != NULL){ gcFree(attrListPool[i].data); } if(attrListPool[i].keys != NULL){ gcFree(attrListPool[i].keys); } } gcFree(attrListPool); } }
ERROR interpret(SYMBOL_TABLE* table) { STACK_PTR stack; ERROR err; stack = gcMalloc(sizeof(struct STACK)); stackInit(stack); /// ----- POZNAMKA ----- err = recursive_interpret(table->curr,stack); stackFree(stack); gcFree(stack); return err; }