⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filteringtable.h

📁 墨香最新私服
💻 H
字号:
// FilteringTable.h: interface for the CFilteringTable class.
//
//////////////////////////////////////////////////////////////////////

#ifndef _CFILTERINGTABLE_H_
#define _CFILTERINGTABLE_H_


#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//#define FILTER_TEST

#define FILTERTABLE	CFilteringTable::GetInstance()

#define FILEPATH_FILTERWORD "./Resource/FilterWord.txt"


enum FILTERKIND
{
	eFilter_GM,
	eFilter_System,
	eFilter_Slang,
	
	eFilter_Count,
};


enum eFILTER_METHOD
{
						// 抗) 宫氢捞 鞘磐窜绢老 锭
	eFM_WHOLE_MATCH,	//-> 宫氢		: 八免
	eFM_INCLUDE,		//-> 唱宫氢		: 八免	
	eFM_ALLOWSPACE,		//-> 唱宫磊氢	: 八免	
};



struct FILTER_NODE
{
	char cChar;
	char cExChar;
	char bSpread;
	char bEndFlag;

	FILTER_NODE* pChild;
	FILTER_NODE* pSibling;
	FILTER_NODE* pParent;

	FILTER_NODE():pChild(0),pSibling(0),pParent(0),bSpread(0),bEndFlag(0),cExChar(0),cChar(0) {}
};


class CFilteringTable
{

protected:

	FILTER_NODE		m_RootNode[eFilter_Count];

	int				m_nStrPos;

	char*			m_strFile;
	
//吝埃俊 茫栏搁 辆丰窍扁 困茄 函荐甸
	BOOL			m_bSearched;
	BOOL			m_bSpread;
	
	char			m_strBuf[256];

//


#ifdef FILTER_TEST
	int				m_nMemory;
#endif

	
protected:

	void AddWord( char* pWord, int nKind );
	void AddNode( FILTER_NODE* pNode, char* pWord );
	void DeleteNode( FILTER_NODE* pNode );
	void CleanNode( FILTER_NODE* pNode );

	void SearchNode( FILTER_NODE* pNode, char* pStr, int nDepth, BOOL bDBC );	
	void SearchNode_AllowSpace( FILTER_NODE* pNode, char* pStr, BOOL bDBC );

	BOOL LoadFilterWord( char* strFile );
	BOOL LoadFilterWordBinary( char* strFile );
	void SettingFilterWord( char* pStr, DWORD bufLen );

	BOOL FM_WholeMatch( char* pStr, int nKind );
	BOOL FM_Include( char* pStr, int nKind );
	BOOL FM_AllowSpace( char* pStr, int nKind, int nAllowSpace );

	int RemoveSpace( char* pStrIn, char* pStrOut );

public:

	CFilteringTable();
	virtual ~CFilteringTable();
	
	MAKESINGLETON( CFilteringTable )
	
	void Init();
	void Release();

	BOOL FilterWordInString( char* pStr, int nKind, int nMethod );

	BOOL IsInvalidCharInclude( unsigned char* pStr );
	BOOL IsUsableName( char* pName );
	BOOL FilterChat( char* pChat );

#ifdef _FILTER_TEST_
	int	GetMemory() { return m_nMemory; }
#endif
};







#endif // _CFILTERINGTABLE_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -