#if !defined(__SAI_struc_h__)
#define __SAI_struc_h__
 
#include "cpa_std.h"
 
#undef EXTERN
#undef extern
#if !defined(D_SAI_Input_VariableDefine)
#define EXTERN extern
#else
#define EXTERN
#endif /* D_SAI_Input_VariableDefine */
 
#if defined(__cplusplus)
extern "C"
{
#endif /* __cplusplus */
 
typedef __int64 tdLong64;
 
/*LST2_M_StaticUseListOf(SAI_tdxHandleToListEntry);*/
 
typedef struct tdstPointerData_
{
 void *p_vPointer;
 unsigned short uwBlocAndModuleID;
} tdstPointerData;
 
typedef struct tdstArrayData_
{
 unsigned char *p_ucPointer;
 unsigned long ulArraySize;
} tdstArrayData;
 
typedef struct tdstBooleanData_
{
 unsigned char ucBitPosition;
 unsigned char ucCharData;
} tdstBooleanData;
 
union SAI_tduData_
{
 unsigned char           ucCharData;
 unsigned short          uwShortData;
 unsigned long           ulLongData;
 tdLong64                i64Long64Data;
 struct tdstPointerData_ stPointerData;
 struct tdstArrayData_   stArrayData;
 struct tdstBooleanData_ stBooleanData;
};
 
typedef struct SAI_tdstListEntry_
{
 struct SAI_tdstListEntry_ * p_stNextEntry;    /* Pointer to the next entry (single-link list)*/
 
 void *p_vDataPointer;
 
 union SAI_tduData_ uData;
 SAI_tdeFlags   eFlags;
 unsigned char  ucMemoryLevel;
 unsigned char  ucDummy;    /* To align the structure*/
} SAI_tdstListEntry;
 
typedef SAI_tdstListEntry *SAI_tdxHandleToListEntry;
 
typedef struct SAI_tdstInternalStructure_
{
#ifdef _DEBUG
 unsigned long ulNumberOfEntries;
#endif
 struct SAI_tdstListEntry_ * p_stFirstEntry;    /* Pointer to the first entry (single-link list)*/
 struct SAI_tdstListEntry_ * p_stLastEntry;     /* Pointer to the last entry. */
                                                /* (To insert some elements at the end of the list)*/
} SAI_tdstInternalStructure;
 
EXTERN struct SAI_tdstInternalStructure_ SAI_g_stInternalStructure;
 
#if defined(__cplusplus)
}
#endif /* __cplusplus */
 
#endif /* __SAI_struc_h__ */
