📄 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 + -