Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of BLE_BlueNRG by
list.c
00001 /******************** (C) COPYRIGHT 2012 STMicroelectronics ******************** 00002 * File Name : list.c 00003 * Author : AMS - HEA&RF BU 00004 * Version : V1.0.0 00005 * Date : 19-July-2012 00006 * Description : Circular Linked List Implementation. 00007 ******************************************************************************** 00008 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 00009 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 00010 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 00011 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 00012 * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 00013 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 00014 *******************************************************************************/ 00015 00016 /****************************************************************************** 00017 * Include Files 00018 ******************************************************************************/ 00019 #include <hal_types.h> 00020 #include "list.h" 00021 00022 /****************************************************************************** 00023 * Function Definitions 00024 ******************************************************************************/ 00025 void list_init_head (tListNode * listHead) 00026 { 00027 listHead->next = listHead; 00028 listHead->prev = listHead; 00029 } 00030 00031 tHalBool list_is_empty (tListNode * listHead) 00032 { 00033 return ((listHead->next == listHead)? TRUE:FALSE); 00034 } 00035 00036 void list_insert_head (tListNode * listHead, tListNode * node) 00037 { 00038 node->next = listHead->next; 00039 node->prev = listHead; 00040 listHead->next = node; 00041 (node->next)->prev = node; 00042 } 00043 00044 00045 void list_insert_tail (tListNode * listHead, tListNode * node) 00046 { 00047 node->next = listHead; 00048 node->prev = listHead->prev; 00049 listHead->prev = node; 00050 (node->prev)->next = node; 00051 } 00052 00053 00054 void list_remove_node (tListNode * node) 00055 { 00056 (node->prev)->next = node->next; 00057 (node->next)->prev = node->prev; 00058 } 00059 00060 00061 void list_remove_head (tListNode * listHead, tListNode ** node ) 00062 { 00063 *node = listHead->next; 00064 list_remove_node (listHead->next); 00065 (*node)->next = NULL; 00066 (*node)->prev = NULL; 00067 } 00068 00069 00070 void list_remove_tail (tListNode * listHead, tListNode ** node ) 00071 { 00072 *node = listHead->prev; 00073 list_remove_node (listHead->prev); 00074 (*node)->next = NULL; 00075 (*node)->prev = NULL; 00076 } 00077 00078 00079 void list_insert_node_after (tListNode * node, tListNode * ref_node) 00080 { 00081 node->next = ref_node->next; 00082 node->prev = ref_node; 00083 ref_node->next = node; 00084 (node->next)->prev = node; 00085 } 00086 00087 00088 void list_insert_node_before (tListNode * node, tListNode * ref_node) 00089 { 00090 node->next = ref_node; 00091 node->prev = ref_node->prev; 00092 ref_node->prev = node; 00093 (node->prev)->next = node; 00094 } 00095 00096 00097 int list_get_size (tListNode * listHead) 00098 { 00099 int size = 0; 00100 tListNode * temp = listHead->next; 00101 while (temp != listHead) 00102 { 00103 size++; 00104 temp = temp->next; 00105 } 00106 return (size); 00107 } 00108 00109 void list_get_next_node (tListNode * ref_node, tListNode ** node) 00110 { 00111 *node = ref_node->next; 00112 } 00113 00114 00115 void list_get_prev_node (tListNode * ref_node, tListNode ** node) 00116 { 00117 *node = ref_node->prev; 00118 } 00119
Generated on Tue Jul 12 2022 16:24:20 by
1.7.2
