T_void Hash32Remove(T_hash32Item hashItem) { T_hash32ItemStruct *p_item ; T_doubleLinkList list ; DebugRoutine("Hash32Remove") ; /* Check to see if the item is bad. */ DebugCheck(hashItem != HASH32_ITEM_BAD) ; if (hashItem != HASH32_ITEM_BAD) { /* Get a quick pointer. */ p_item = (T_hash32ItemStruct *)hashItem ; /* See if the tag is correct. */ DebugCheck(p_item->tag == HASH32_ITEM_TAG) ; if (p_item->tag == HASH32_ITEM_TAG) { /* Yes, this is a proper item, remove it. */ DoubleLinkListRemoveElement(p_item->elementInBigList) ; DoubleLinkListRemoveElement(p_item->elementInHashList) ; /* Mark this object as no longer. */ p_item->tag = HASH32_ITEM_DEAD_TAG ; /* Delete this item. */ MemFree(p_item) ; } } DebugEnd() ; }
/* removes a player name from the list of players for the selected game */ T_void GuildUIRemovePlayer (T_byte8 *playerName) { T_doubleLinkListElement element; T_byte8 *name; T_word32 size; DebugRoutine ("GuildUIRemovePlayer"); size=TxtboxCanFit(G_displayBoxes[GUILD_GAME_DESC],playerName); element=DoubleLinkListGetFirst(G_playerList); while (element != DOUBLE_LINK_LIST_ELEMENT_BAD) { name=(T_byte8 *)DoubleLinkListElementGetData(element); if (strncmp(name,playerName,size)==0) { /* remove element */ MemFree(name); DoubleLinkListRemoveElement(element); break; } element=DoubleLinkListElementGetNext(element); } GuildUIDrawPlayerList(); DebugEnd(); }
/* removes a game from the list of active 'open' games */ T_void GuildUIRemoveGame (T_word16 mapNumber, T_gameGroupID groupID) { T_gameDescriptionStruct *p_game; T_doubleLinkListElement element,nextElement; DebugRoutine ("GuildUIRemoveGame"); element=DoubleLinkListGetFirst(G_gameList); while (element != DOUBLE_LINK_LIST_ELEMENT_BAD) { nextElement=DoubleLinkListElementGetNext(element); p_game=(T_gameDescriptionStruct *)DoubleLinkListElementGetData(element); if ((p_game->mapNumber==mapNumber) && (CompareGameGroupIDs(p_game->groupID, groupID))) { /* remove this one */ MemFree(p_game); DoubleLinkListRemoveElement(element); break; } element=nextElement; } /* Only redraw the list if we are not joining or creating a game. */ if (PeopleHereGetOurState() == 0) GuildUIDrawGameList(); DebugEnd(); }
/** * DoubleLinkListDestroy goes through a list of double link list nodes * and detaches the data with them and then deletes all the nodes. * * NOTE: * The calling routine must realize that this routine does not * deallocate memory attached to a node, it is assumed that the calling * routine will do this. * * @param linkList -- Handle to link list to destroy * *<!-----------------------------------------------------------------------*/ T_void DoubleLinkListDestroy(T_doubleLinkList linkList) { T_doubleLinkListStruct *p_head ; DebugRoutine("DoubleLinkListDestroy") ; DebugCheck(linkList != DOUBLE_LINK_LIST_BAD) ; #ifdef COMPILE_OPTION_DOUBLE_LINK_OUTPUT printf("!F 1 list_%s\n", DebugGetCallerName()) ; #endif /* Get a quick pointer. */ p_head = (T_doubleLinkListStruct *)linkList ; DebugCheck(p_head->tag == DOUBLE_LINK_LIST_TAG) ; /* Remove all items in the list. Hopefully */ /* all attached data is not allocated memory or is being */ /* managed by someone else. */ while (p_head->p_next != p_head) DoubleLinkListRemoveElement((T_doubleLinkListElement)p_head->p_next) ; /* Destroy this element now. */ IDestroyNode(p_head) ; DebugEnd() ; }
/** * MousePopEventHandler restores the last handler on the stack * (if there is one). * *<!-----------------------------------------------------------------------*/ T_void MousePopEventHandler(T_void) { T_doubleLinkListElement first ; T_mouseEventHandler handler ; DebugRoutine("MousePopEventHandler") ; /* Get the old event handler. */ first = DoubleLinkListGetFirst(G_eventStack) ; DebugCheck(first != DOUBLE_LINK_LIST_ELEMENT_BAD) ; if (first != DOUBLE_LINK_LIST_ELEMENT_BAD) { handler = (T_mouseEventHandler) DoubleLinkListElementGetData(first) ; MouseSetEventHandler(handler) ; DoubleLinkListRemoveElement(first) ; } DebugEnd() ; }
/* clears all player names from the player list box */ T_void GuildUIClearPlayers (T_void) { T_doubleLinkListElement element,nextElement; T_byte8 *p_name; T_byte8 *test; DebugRoutine ("GuildUIClearPlayers"); element=DoubleLinkListGetFirst(G_playerList); while (element != DOUBLE_LINK_LIST_ELEMENT_BAD) { nextElement=DoubleLinkListElementGetNext(element); p_name=(T_byte8 *)DoubleLinkListElementGetData(element); MemFree(p_name); DoubleLinkListRemoveElement(element); element=nextElement; } test=TxtboxGetData(G_displayBoxes[GUILD_GAME_DESC]); if (test != NULL) TxtboxSetData(G_displayBoxes[GUILD_GAME_DESC],""); DebugEnd(); }
T_void FormPop(T_void) { T_formObjectID *p_formObjs; T_doubleLinkListElement element; T_void *p_state; T_formVariousValues *p_values; DebugRoutine("FormPop"); /* Recover the form callback */ element = DoubleLinkListGetFirst(G_formStack); p_values = (T_formVariousValues *)DoubleLinkListElementGetData(element); formcallback = p_values->callback; G_formHasTextBoxes = p_values->hasText; G_formHasButtons = p_values->hasButtons; MemFree(p_values); DoubleLinkListRemoveElement(element); /* Recover the list of text boxes */ element = DoubleLinkListGetFirst(G_formStack); p_state = DoubleLinkListElementGetData(element); TxtboxSetStateBlock(p_state); MemFree(p_state); DoubleLinkListRemoveElement(element); /* Recover the list of sliders */ element = DoubleLinkListGetFirst(G_formStack); p_state = DoubleLinkListElementGetData(element); SliderSetStateBlock(p_state); MemFree(p_state); DoubleLinkListRemoveElement(element); /* Recover the list of graphics */ element = DoubleLinkListGetFirst(G_formStack); p_state = DoubleLinkListElementGetData(element); GraphicSetStateBlock(p_state); MemFree(p_state); DoubleLinkListRemoveElement(element); /* Recover the list of buttons */ element = DoubleLinkListGetFirst(G_formStack); p_state = DoubleLinkListElementGetData(element); ButtonSetStateBlock(p_state); MemFree(p_state); DoubleLinkListRemoveElement(element); /* Recover the list of form objects */ element = DoubleLinkListGetFirst(G_formStack); p_formObjs = DoubleLinkListElementGetData(element); memcpy(G_formObjectArray, p_formObjs, sizeof(G_formObjectArray)); MemFree(p_formObjs); DoubleLinkListRemoveElement(element); /* If the list is empty, destroy it. */ if (DoubleLinkListGetNumberElements(G_formStack) == 0) { DoubleLinkListDestroy(G_formStack); G_formStack = DOUBLE_LINK_LIST_BAD; } DebugEnd(); }