?? cftanalyser.h
字號:
// 自定義格式化文本代碼
// 作者: Janhail Luo
// 最后整理: 2003-03-03
//////////////////////////////////////////////////////////////////////
#ifndef _CFTANALYSER_H_
#define _CFTANALYSER_H_
#include <map>
#include <list>
#include <stack>
#include <vector>
#include <string.h>
using namespace std;
class CCFTAnalyser
{
public:
struct SItem
{
int iType; // 節點類型, 0 元素, 1 元素內容
CString strName; // 標記名字
map<CString, CString> listParm; // 屬性表
vector<SItem*> listNode; // 子元素列表
void* pData; // 用戶自定義數據
};
public:
// 構造函數
CCFTAnalyser();
// 析構函數
virtual ~CCFTAnalyser();
public:
// 初始化,
// szString是一個以0結尾的字符串,里面保存的是需要分析的字符串
// szName是一個以0結尾的字符串,里面保存這次分析的名字
// 返回true表是分析正確,返回false表是分析錯誤。
bool Init(const char* szString, const char* szName);
// 清除
void Clear();
// 訪問所有的字節點
// iType傳入一個用戶定義的參數
// pParam也是傳入一個用戶自定義的一個指針
void Visitor(int iType, void* pParam);
protected:
// 分析字符串szStr
// 如果分析成功完成就返回true
// 否則返回 false
bool Analyse(const char* szStr);
// 當分析程序碰到一個標記時調用這個函數
// iState 當前分析狀態
// szStart 指向標記開始部分的指針
// szEnd 指向標記結束部分的指針
bool DoTag(int iState, char* szStart, char* szEnd);
// 當分析程序碰到一個屬性時調用這個函數
// iState 當前分析狀態
// szStart 指向標記開始部分的指針
// szEnd 指向標記結束部分的指針
bool DoItem(int iState, char* szStart, char* szEnd);
// 訪問某一個節點
// iType 是用戶自定義的參數
// iDepth 是這個節點在節點樹中的層次,根節點的層次為0
// pItem 是當前訪問的節點
// pParam 是用戶自定義的一個指針
void VisitItem(int iType, int iDepth,
CCFTAnalyser::SItem* pItem, void* pParam);
protected:
// 當創建一個新的節點的時候就會調用這個函數
// pItem 當前創建的節點的指針
virtual void OnCreateItem(CCFTAnalyser::SItem* pItem);
// 當銷毀一個節點的時候就會調用這個函數
// pItem 當前銷毀的節點的指針
virtual void OnDestroyItem(CCFTAnalyser::SItem* pItem);
// 訪問一個節點前,這是一個虛函數,用戶可以自定義這個函數
// iType 是用戶自定義的參數
// iDepth 是這個節點在節點樹中的層次,根節點的層次為0
// pItem 是當前訪問的節點
// pParam 是用戶自定義的一個指針
virtual void OnVisitBefore(int iType, int iDepth,
CCFTAnalyser::SItem* pItem, void* pParam);
// 訪問一個節點,這是一個虛函數,用戶可以自定義這個函數
// iType 是用戶自定義的參數
// iDepth 是這個節點在節點樹中的層次,根節點的層次為0
// pItem 是當前訪問的節點
// pParam 是用戶自定義的一個指針
virtual void OnVisit(int iType, int iDepth,
CCFTAnalyser::SItem* pItem, void* pParam);
// 訪問一個節點后,這是一個虛函數,用戶可以自定義這個函數
// iType 是用戶自定義的參數
// iDepth 是這個節點在節點樹中的層次,根節點的層次為0
// pItem 是當前訪問的節點
// pParam 是用戶自定義的一個指針
virtual void OnVisitAfter(int iType, int iDepth,
CCFTAnalyser::SItem* pItem, void* pParam);
protected:
CString m_Name;
SItem m_Root; // 根節點
stack<SItem*> m_Stack;
};
#endif // _CFTANALYSER_H_
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -