⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ospf_container.c

📁 vxworks下ospf协议栈
💻 C
字号:
/* 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);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -