?? ospf_container.c
字號(hào):
/* ospf_container.c - OSPF containers *//* Copyright 2003 Wind River Systems, Inc. *//*modification history--------------------01b,02jun03,ram Changed native memory usage to OSPF memory partition01a,27may03,agi created (ported from RWOS) *//* includes */#include <vxWorks.h>#include "ospf.h"#include "ospf_container_functions.h"/*********************************************************************************/OSPF_CONTAINER_ITERATOR ospf_container_create_iterator (OSPF_CONTAINER* p_ospf_container){ OSPF_CONTAINER_ITERATOR iterator; if (p_ospf_container == NULL) { return ((OSPF_CONTAINER_ITERATOR) NULL); } iterator = ((OSPF_CONTAINER_FUNCTIONS*)p_ospf_container)->create_iterator (p_ospf_container); return (iterator); }/*********************************************************************************/OSPF_CONTAINER_ITERATOR ospf_container_create_copy_of_iterator (OSPF_CONTAINER_ITERATOR iterator){ OSPF_CONTAINER_ITERATOR* p_iterator; OSPF_CONTAINER_ITERATOR new_iterator; new_iterator = (OSPF_CONTAINER_ITERATOR) NULL; p_iterator = (OSPF_CONTAINER_ITERATOR*) iterator; if (p_iterator != NULL) { new_iterator = ((RW_ITERATOR_FUNCTIONS*) p_iterator)->create_copy_of_iterator (p_iterator); } return (new_iterator);}/*********************************************************************************/void ospf_container_free_iterator (OSPF_CONTAINER_ITERATOR iterator){ OSPF_CONTAINER_ITERATOR* p_iterator; p_iterator = (OSPF_CONTAINER_ITERATOR*) iterator; if (p_iterator != NULL) { ((RW_ITERATOR_FUNCTIONS*)p_iterator)->free_iterator (p_iterator); }}/************************************************************************************/void ospf_container_free (OSPF_CONTAINER* p_ospf_container){ if (p_ospf_container != NULL) { ((OSPF_CONTAINER_FUNCTIONS*)p_ospf_container)->free_container (p_ospf_container); }}/************************************************************************************/void ospf_container_goto_front (OSPF_CONTAINER_ITERATOR iterator){ OSPF_CONTAINER_ITERATOR* p_iterator; p_iterator = (OSPF_CONTAINER_ITERATOR*) iterator; if (p_iterator != NULL) { ((RW_ITERATOR_FUNCTIONS*)p_iterator)->iterator_set_at_front (p_iterator); }}/************************************************************************************/OSPF_CONTAINER_ITEM* ospf_container_at (OSPF_CONTAINER_ITERATOR iterator){ OSPF_CONTAINER_ITERATOR* p_iterator; OSPF_CONTAINER_ITEM* p_item; p_iterator = (OSPF_CONTAINER_ITERATOR*) iterator; if (p_iterator == NULL) { return (NULL); } p_item = ((RW_ITERATOR_FUNCTIONS*)p_iterator)->get_item_at_iterator (p_iterator); return (p_item);}/************************************************************************************/bool ospf_container_is_at_end (OSPF_CONTAINER_ITERATOR iterator){ bool return_value; OSPF_CONTAINER_ITERATOR* p_iterator; p_iterator = (OSPF_CONTAINER_ITERATOR*) iterator; if (p_iterator == NULL) { return (true); } return_value = ((RW_ITERATOR_FUNCTIONS*)p_iterator)->iterator_is_at_end (p_iterator); return (return_value);}/************************************************************************************/bool ospf_container_remove (OSPF_CONTAINER_ITERATOR iterator){ bool return_value; OSPF_CONTAINER_ITERATOR* p_iterator; p_iterator = (OSPF_CONTAINER_ITERATOR*) iterator; if (p_iterator == NULL) { return (false); } return_value = ((RW_ITERATOR_FUNCTIONS*)p_iterator)->remove_from_iterator (p_iterator); return (return_value);}/************************************************************************************/void ospf_container_free_items (OSPF_CONTAINER* p_ospf_container){ void* p_item; OSPF_CONTAINER_ITERATOR iterator; iterator = ospf_container_create_iterator (p_ospf_container); ospf_container_goto_front (iterator); while (ospf_container_is_at_end (iterator) == false) { p_item = ospf_container_at (iterator); if (p_item != NULL) { table_free (p_item); } ospf_container_remove (iterator); } ospf_container_free_iterator (iterator);}/************************************************************************************/bool ospf_container_add_front (OSPF_CONTAINER* p_ospf_container, const OSPF_CONTAINER_ITEM* p_item){ bool return_value; if (p_ospf_container == NULL) { return (false); } if (p_item == NULL) { return (false); } return_value = ((OSPF_CONTAINER_FUNCTIONS*)p_ospf_container)->add_at_front (p_ospf_container, p_item); return (return_value);}/************************************************************************************/void ospf_container_remove_front (OSPF_CONTAINER* p_ospf_container){ if (p_ospf_container != NULL) { ((OSPF_CONTAINER_FUNCTIONS*)p_ospf_container)->remove_from_front (p_ospf_container); }}/************************************************************************************/bool ospf_container_add_back (OSPF_CONTAINER* p_ospf_container, const OSPF_CONTAINER_ITEM* p_item){ bool return_value; if (p_ospf_container == NULL) { return (false); } if (p_item == NULL) { return (false); } return_value = ((OSPF_CONTAINER_FUNCTIONS*)p_ospf_container)->add_at_back (p_ospf_container, p_item); return (return_value);}/************************************************************************************/void ospf_container_remove_back (OSPF_CONTAINER* p_ospf_container){ if (p_ospf_container != NULL) { ((OSPF_CONTAINER_FUNCTIONS*)p_ospf_container)->remove_from_back (p_ospf_container); }}/************************************************************************************/bool ospf_container_insert (OSPF_CONTAINER_ITERATOR iterator, const OSPF_CONTAINER_ITEM* p_item){ bool return_value; OSPF_CONTAINER_ITERATOR* p_iterator; p_iterator = (OSPF_CONTAINER_ITERATOR*) iterator; if (p_iterator == NULL) { return (false); } if (p_item == NULL) { return (false); } return_value = ((RW_ITERATOR_FUNCTIONS*)p_iterator)->insert_at_iterator (p_iterator, p_item); return (return_value);}/************************************************************************************/UINT ospf_container_size (const OSPF_CONTAINER* p_ospf_container){ UINT number_of_elements; if (p_ospf_container == NULL) { return (0); } number_of_elements = ((OSPF_CONTAINER_FUNCTIONS*)p_ospf_container)->get_container_size (p_ospf_container); return (number_of_elements);}/************************************************************************************/OSPF_CONTAINER_ITEM* ospf_container_front (const OSPF_CONTAINER* p_ospf_container){ OSPF_CONTAINER_ITEM* p_first_element; if (p_ospf_container == NULL) { return (NULL); } p_first_element = ((OSPF_CONTAINER_FUNCTIONS*)p_ospf_container)->get_item_at_front (p_ospf_container); return (p_first_element);}/************************************************************************************/OSPF_CONTAINER_ITEM* ospf_container_back (const OSPF_CONTAINER* p_ospf_container){ OSPF_CONTAINER_ITEM* p_last_element; if (p_ospf_container == NULL) { return (NULL); } p_last_element = ((OSPF_CONTAINER_FUNCTIONS*)p_ospf_container)->get_item_at_back (p_ospf_container); return (p_last_element);}/************************************************************************************/bool ospf_container_is_at_front (OSPF_CONTAINER_ITERATOR iterator){ bool return_value; OSPF_CONTAINER_ITERATOR* p_iterator; p_iterator = (OSPF_CONTAINER_ITERATOR*) iterator; if (p_iterator == NULL) { return (false); } return_value = ((RW_ITERATOR_FUNCTIONS*)p_iterator)->iterator_is_at_front (p_iterator); return (return_value);}/************************************************************************************/void ospf_container_goto_end (OSPF_CONTAINER_ITERATOR iterator){ OSPF_CONTAINER_ITERATOR* p_iterator; p_iterator = (OSPF_CONTAINER_ITERATOR*) iterator; if (p_iterator != NULL) { ((RW_ITERATOR_FUNCTIONS*)p_iterator)->iterator_set_at_end (p_iterator); }}/************************************************************************************/bool ospf_container_find_by_content (OSPF_CONTAINER_ITEM* p_item, OSPF_CONTAINER_ITERATOR iterator_matched_item){ bool return_value; OSPF_CONTAINER_ITERATOR* p_iterator; return_value = false; p_iterator = (OSPF_CONTAINER_ITERATOR*) iterator_matched_item; if (p_iterator != NULL) { return_value = ((RW_ITERATOR_FUNCTIONS*)p_iterator)->iterator_find_by_content (p_item, p_iterator); } return (return_value);} /************************************************************************************/RW_EXPORT bool ospf_container_find (FP_OSPF_CONTAINER_ITEM_CRITERIA_MATCHER fp_criteria_matcher, OSPF_CONTAINER_CRITERIA* p_criteria, OSPF_CONTAINER_ITERATOR iterator_matched_item){ bool return_value; OSPF_CONTAINER_ITERATOR* p_iterator_matched_item; return_value = false; p_iterator_matched_item = (OSPF_CONTAINER_ITERATOR*) iterator_matched_item; if (p_iterator_matched_item != NULL) { return_value = ((RW_ITERATOR_FUNCTIONS*)p_iterator_matched_item)->iterator_find (fp_criteria_matcher, p_criteria, p_iterator_matched_item); } return (return_value);}/************************************************************************************/bool ospf_container_find_in_range (OSPF_CONTAINER_ITERATOR iterator_first, OSPF_CONTAINER_ITERATOR iterator_last, FP_OSPF_CONTAINER_ITEM_CRITERIA_MATCHER fp_criteria_matcher, OSPF_CONTAINER_CRITERIA* p_criteria, OSPF_CONTAINER_ITERATOR iterator_matched_item){ bool return_value; OSPF_CONTAINER_ITERATOR* p_first_iterator; OSPF_CONTAINER_ITERATOR* p_last_iterator; OSPF_CONTAINER_ITERATOR* p_iterator_matched_item; p_first_iterator = (OSPF_CONTAINER_ITERATOR*) iterator_first; p_last_iterator = (OSPF_CONTAINER_ITERATOR*) iterator_last; p_iterator_matched_item = (OSPF_CONTAINER_ITERATOR*) iterator_matched_item; if ((p_first_iterator == NULL) || (p_last_iterator == NULL) || (p_iterator_matched_item == NULL)) { return (false); } return_value = ((RW_ITERATOR_FUNCTIONS*)p_first_iterator)->iterator_find_in_range (p_first_iterator, p_last_iterator, fp_criteria_matcher, p_criteria, p_iterator_matched_item); return (return_value);}/*********************************************************************************/bool ospf_container_next (OSPF_CONTAINER_ITERATOR iterator){ bool return_value; OSPF_CONTAINER_ITERATOR* p_iterator; p_iterator = (OSPF_CONTAINER_ITERATOR*) iterator; if (p_iterator == NULL) { return (false); } return_value = ((RW_ITERATOR_FUNCTIONS*)p_iterator)->set_iterator_to_next_item (p_iterator); return (return_value);}/************************************************************************************/bool ospf_container_previous (OSPF_CONTAINER_ITERATOR iterator){ bool return_value; OSPF_CONTAINER_ITERATOR* p_iterator; p_iterator = (OSPF_CONTAINER_ITERATOR*) iterator; if (p_iterator == NULL) { return (false); } return_value = ((RW_ITERATOR_FUNCTIONS*)p_iterator)->set_iterator_to_previous_item (p_iterator); return (return_value);}/************************************************************************************/bool ospf_container_set_at (OSPF_CONTAINER_ITERATOR iterator, const OSPF_CONTAINER_ITEM* p_item){ OSPF_CONTAINER_ITERATOR* p_iterator; bool result; result = false; p_iterator = (OSPF_CONTAINER_ITERATOR*) iterator; if (p_iterator == NULL) { return (result); } result = ((RW_ITERATOR_FUNCTIONS*)p_iterator)->set_item_at_iterator (p_iterator, p_item); return (result);}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -