Files
libremetaverse/applications/snowcrash/snowflake/Block.cpp
John Hurliman a22cc1de4c * Updated all the keywords/protocol files for 1.11.3.1
* Moved snowcrash to the applications directory
* Removed the Release folder from SLIRC

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@133 52acb1d6-8a22-11de-b505-999d5b087335
2006-08-09 19:06:41 +00:00

131 lines
1.7 KiB
C++

#include "StdAfx.h"
#include ".\Block.h"
#include ".\keywords.h"
CBlock::CBlock(void)
{
m_lpVars = NULL;
m_lpPrev = NULL;
m_lpNext = NULL;
}
CBlock::~CBlock(void)
{
}
void CBlock::FreeVars(void)
{
CVar *var = m_lpVars;
while (var)
{
if (var->m_lpNext)
{
var = var->m_lpNext;
if (var->m_lpPrev)
SAFE_DELETE(var->m_lpPrev);
}
else
SAFE_DELETE(var);
}
m_lpVars = NULL;
}
bool CBlock::AddVar(CVar *lpVar)
{
CVar *var = NULL;
if (m_lpVars)
{
var = m_lpVars;
while (var->m_lpNext)
var = var->m_lpNext;
var->m_lpNext = lpVar;
if (!var->m_lpNext) return false;
var->m_lpNext->m_lpNext = NULL;
var->m_lpNext->m_lpPrev = var;
return true;
}
else
{
var = lpVar;
if (!var) return false;
m_lpVars = var;
m_lpVars->m_lpNext = NULL;
m_lpVars->m_lpPrev = NULL;
return true;
}
return false;
}
CVar *CBlock::FindVar(char *lpszVar)
{
CVar *var= m_lpVars;
while (var)
{
if (var->m_lpszVar && !stricmp(lpszVar, var->m_lpszVar))
return var;
var = var->m_lpNext;
}
return NULL;
}
int CBlock::CountVar(char *lpszVar)
{
CVar *var= m_lpVars;
int nCount = 0;
while (var)
{
if (var->m_lpszVar && !stricmp(lpszVar, var->m_lpszVar))
nCount++;
var = var->m_lpNext;
}
return nCount;
}
void CBlock::Dump(void)
{
CVar *var = m_lpVars;
while (var)
{
var->Dump();
var = var->m_lpNext;
}
}
int CBlock::Pack(LPBYTE lpData)
{
int nTotalWrote = 0;
int nWrote = 0;
LPBYTE lpPtr = lpData;
CVar *var = m_lpVars;
while (var)
{
nWrote = var->Pack(lpPtr);
lpPtr += nWrote;
nTotalWrote += nWrote;
var = var->m_lpNext;
}
return nTotalWrote;
}