#ifndef _STKEXP_
#define _STKEXP_



#ifdef __cplusplus
extern "C"
{
#endif
struct STKNode * WINAPI Stk_GetHeader(void) ;
void WINAPI Stk_SetStkDirty();
int WINAPI Stk_buildStack();
int WINAPI Stk_add(struct STKNode *node);
void WINAPI Stk_deleteAll();
void WINAPI Stk_DisplayToShell();
int WINAPI Stk_IsValidVar(char *command,BOOLEAN& isGlobal,SYM_DESCRIPTOR& symDesc);
void WINAPI Stk_GetNumber(int& num) ;
int WINAPI Stk_InitStkLocalVar(int nLevel);
int WINAPI Stk_GetStkLocalVar(SYM_DESCRIPTOR& desc,CString& name);
void WINAPI Stk_VarDeleteAll();  
int WINAPI Stk_VarLineToNode(int nRow,struct VarNode *& node);
int WINAPI Stk_IsOverFlow();

///////
//int WINAPI Stk_AddVar( char *str );
int WINAPI Stk_AddLocalVar(SYM_DESCRIPTOR desc,CString name);
//int WINAPI Stk_Add( struct VarNode* node );
int WINAPI Stk_Delete( struct VarNode* node );
int WINAPI Stk_DeleteLocal(SYM_DESCRIPTOR desc);
void WINAPI Stk_DeleteAllLocal(void);
void WINAPI Stk_MaxLine(int& nLine);
int WINAPI Stk_IsLegalValue(int nLine , CString str);
//int WINAPI Stk_CheckValue(struct VarNode* node, char *str);
int WINAPI Stk_ModifyValue(int nLine , CString str);
//int WINAPI Stk_SetValue(struct VarNode* node, char *str);
//void WINAPI Stk_DeleteAll();
int WINAPI Stk_ExtendedNode( struct VarNode* node );
int WINAPI Stk_CompressNode( struct VarNode* node );
//int WINAPI Stk_UpdataExtendedNode( struct VarNode* node );
//int WINAPI Stk_EditNode(struct VarNode *node , char *str);
int WINAPI Stk_UpdataAllLocal();
//int WINAPI Stk_UpdataAllNode( );
//int WINAPI Stk_UpdataOneNode( struct VarNode* node );
//int WINAPI Stk_UpdataOneNodeValue( struct VarNode* node );
//void WINAPI Stk_ShowOneNode( struct VarNode* node );
//void WINAPI Stk_ShowVarToShell();
//void WINAPI Stk_ClearNode( struct VarNode* node );
//int WINAPI Stk_LineToNode(int nRow,struct VarNode *& node);
//void WINAPI  Stk_UpdataLine( int nLine , struct VarNode * node );
int WINAPI Stk_NodeToPos(struct VarNode* node,int& nPos);
void WINAPI Stk_AddrToStr(ADDRESS_TYPE addr,CString& str);
int WINAPI Stk_Search( char *str , int & nLine );
int WINAPI Stk_SearchNext( char *str , int nStartLine , int & nLine );   
VarNode* WINAPI  Stk_GetListHeader();     


int WINAPI StkGetStkLevelNum( int& num );
int WINAPI StkGetStkNextNode( STKNode* & node , STKNode* & nextNode );
int WINAPI StkLevelToNode(int nLevel , struct STKNode* &node);
int WINAPI StkGetNodeDisplayString(STKNode* node,CString& s1,CString& s2,
                            CString& s3,CString& s4,CString& s5 );
int WINAPI StkGetStkFirstNode( STKNode* & node );
#ifdef __cplusplus
}
#endif


#endif;