📄 canfixedll.h
字号:
/* canFixedLL.h - WN-CAN fixed-node linked lists */
/* Copyright 2002 Wind River Systems, Inc. */
/*
modification history
--------------------
07nov02,rgp written
*/
/*
DESCRIPTION
The file defines the fixed-node linked lists. A fixed-object linked list is
a normal linked list, except that each node in the linked is statically allocated.
Therefore, this list does not use any dynamic memory.
As a result, there may only be limited use of the linked lists.
In addition, since we want to use common code with what essentially
amounts to sub-classes of the nodes (i.e. specific data for each
separate linked list), define all data within this header file.
*/
#ifndef CAN_FIXEDLL_H_
#define CAN_FIXEDLL_H_
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include "CAN/wnCAN.h"
#include "CAN/canBoard.h"
#include "CAN/canController.h"
/* Define Common Fixed-Node Data Structure */
typedef struct _fll_node
{
struct _fll_node *pNext; /* next node ptr */
int key; /* identifying key value for each node */
/* define union for all uses of our linked list. This is effectively
** our sub-classing of the data structure
**/
union
{
/* board's linked list data */
struct
{
pfn_Board_EstabLnks_Type establinks_fn; /* establishlinks function */
pfn_Board_Open_Type open_fn; /* open function */
pfn_Board_Close_Type close_fn; /* close function */
pfn_Board_Show_Type show_fn; /* show function */
} boarddata;
/* controller's linked list data */
struct {
pfn_Ctrlr_EstabLnks_Type establinks_fn; /* establishlinks function */
} controllerdata;
} nodedata;
} FLL_NodeType;
/* define types for each of the supported lists */
typedef FLL_NodeType BoardLLNode;
typedef FLL_NodeType ControllerLLNode;
/* define struct for an instance of the linked-list */
typedef struct _fll_instance
{
FLL_NodeType *pFirst;
} FLL_RootType;
/* Linked List APIs */
void FLL_Create(FLL_RootType*);
void FLL_Add(FLL_RootType*, FLL_NodeType*);
FLL_NodeType *FLL_Find(FLL_RootType*, int key);
#define FLL_FirstNode(rootptr) ( (rootptr) ? (rootptr)->pFirst : NULL )
#define FLL_NextNode(nodeptr) ( (nodeptr) ? (nodeptr)->pNext : NULL )
/***************************************************************************/
/***************************************************************************/
/***************************************************************************/
/* due do the recursive includes of canboard,cancontroller and this file,
** need to declare the extern'd global variables here becase the root type
** is now fully resolved.
*/
extern FLL_RootType g_BoardLLRoot;
extern FLL_RootType g_ControllerLLRoot;
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* CAN_FIXEDLL_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -