#ifdef __cplusplus
extern "C"
{
#endif  
  
    int WINAPI Var_AddVar( char *str );
    int WINAPI Var_AddLocalVar(SYM_DESCRIPTOR desc,CString name);
    int WINAPI Var_Add( struct VarNode* node );
    int WINAPI Var_Delete( struct VarNode* node );
    int WINAPI Var_DeleteLocal(SYM_DESCRIPTOR desc);
    void WINAPI Var_DeleteAllLocal(void);
    void WINAPI Var_MaxLine(int& nLine);
    
    int WINAPI Var_IsLegalValue(int nLine , CString str);
    int WINAPI Var_CheckValue(struct VarNode* node, char *str);
    
    int WINAPI Var_ModifyValue(int nLine , CString str);
    int WINAPI Var_SetValue(struct VarNode* node, char *str);
    void WINAPI Var_DeleteAll();
    int WINAPI Var_ExtendedNode( struct VarNode* node );
    int WINAPI Var_CompressNode( struct VarNode* node );
    int WINAPI Var_UpdataExtendedNode( struct VarNode* node );
    int WINAPI Var_EditNode(struct VarNode *node , char *str);
    int WINAPI Var_UpdataAllLocal();
    int WINAPI Var_UpdataAllNode( );
    int WINAPI Var_UpdataOneNode( struct VarNode* node );
    int WINAPI Var_UpdataOneNodeValue( struct VarNode* node );
    void WINAPI Var_ShowOneNode( struct VarNode* node );
    void WINAPI Var_ShowVarToShell();
    void WINAPI Var_ClearNode( struct VarNode* node );
    int WINAPI Var_LineToNode(int nRow,struct VarNode *& node);
    int WINAPI Var_NodeToPos(struct VarNode* node,int& nPos);
    void WINAPI  Var_UpdataLine( int nLine , struct VarNode * node );
    void WINAPI Var_AddrToStr(ADDRESS_TYPE addr,CString& str);
    int WINAPI Var_Search( char *str , int & nLine );
    int WINAPI Var_SearchNext( char *str , int nStartLine , int & nLine ); 
    int WINAPI Var_IsValidVarAddr(struct VarNode* pVarNode) ;
    VarNode* WINAPI  Var_GetListHeader();
    int WINAPI Var_CanBeModify(VarNode* pNode);
#ifdef __cplusplus
}
#endif  
    