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

📄 macromanager.cc

📁 五行MMORPG引擎系统V1.0
💻 CC
字号:
/*////////////////////////////////////////////////////////////////////////////////
	宏管理
		在进行lex分析时,进行宏单词管理
		#macro name value
		#unmacro	name

	李亦
	2006.06.8
/*////////////////////////////////////////////////////////////////////////////////

#include "console/macroManager.h"


MacroDictionary gMacroDictionary;

//----------------------------------------------------------------------------
//----------------------------------------------------------------------------

MacroDictionary::MacroDictionary()
{

//   hashTable = NULL;
   mutex = Mutex::createMutex();
}

MacroDictionary::~MacroDictionary()
{
   Mutex::destroyMutex(mutex);
}


void MacroDictionary::begin(StringTableEntry name)
{
	m_pReadyField = name;//StringTable->insert(name);
}

void MacroDictionary::end(StringTableEntry value)
{
	insert(m_pReadyField, value);
}


void MacroDictionary::insert(StringTableEntry  pName, StringTableEntry  pValue)
{
   if(!pName || pName[0]==0)
      return;
	if(!pValue || pValue[0]==0)
	{
		remove(pName);
		return;
	}

   Mutex::lockMutex(mutex);

	//pName		= StringTable->insert(pName,true);
	//pValue	= StringTable->insert(pValue);
   S32 nIndex = search(pName);
	if(nIndex == -1)
	{	
		MacroField mf;
		mf.pName		= pName;
		mf.pValue	= pValue;
		m_arHashTable.push_back(mf);
	}
	else
	{
		m_arHashTable[nIndex].pValue	= pValue;
	}
   Mutex::unlockMutex(mutex);

}

S32 MacroDictionary::search(StringTableEntry name)
{
	for(U32 n=0; n<m_arHashTable.size(); n++)
		if(m_arHashTable[n].pName == name)
			return n;
   return -1;
}

StringTableEntry MacroDictionary::find(StringTableEntry pName)
{
   Mutex::lockMutex(mutex);
   S32 nIndex = search(pName);
	if(nIndex != -1)
		return m_arHashTable[nIndex].pValue;
	return 0;
}


void MacroDictionary::remove(StringTableEntry pName)
{
   if(!pName || pName[0]==0)
      return;

   Mutex::lockMutex(mutex);

   S32 nIndex = search(pName);
	if(nIndex != -1)
		m_arHashTable.erase(nIndex);

   Mutex::unlockMutex(mutex);
}	

⌨️ 快捷键说明

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