windows-nt/Source/XPSP1/NT/drivers/video/ms/test/moninf/comsect.cpp
2020-09-26 16:20:57 +08:00

73 lines
1.6 KiB
C++

#include "stdafx.h"
#include "mon.h"
CCommonSection gCommonSections;
int compareCommonSection(LPCOMMON_SECTION p1, LPCOMMON_SECTION p2)
{
return (stricmp(p1->sectName, p2->sectName));
}
CCommonSection::CCommonSection()
{
m_sections.RemoveAll();
}
CCommonSection::~CCommonSection()
{
ClearAll();
}
VOID CCommonSection::ClearAll(VOID)
{
for (int i = 0; i < m_sections.GetSize(); i++)
delete((LPCOMMON_SECTION)m_sections[i]);
m_sections.RemoveAll();
}
LPCOMMON_SECTION CCommonSection::AddOneSection(LPSTR sectName, LPSTR contents)
{
LPCOMMON_SECTION pNewSection = new(COMMON_SECTION);
if (pNewSection == NULL)
{
ASSERT(FALSE);
return NULL;
}
strcpy(pNewSection->sectName, sectName);
strcpy(pNewSection->contents, contents);
LPSTR pEndSectName = pNewSection->sectName + lstrlen(pNewSection->sectName);
int dupSectCount = 1;
int comp = 1;
for (int i = 0; i < m_sections.GetSize(); i++)
{
LPCOMMON_SECTION pSection = (LPCOMMON_SECTION)m_sections[i];
comp = compareCommonSection(pNewSection, pSection);
if (comp > 0)
continue;
else if (comp < 0)
break;
if (stricmp(pNewSection->contents, pSection->contents) == 0)
break;
///////////////////////////////////////////////////////////////
// Come here, we found a section with same section name but
// different contents. Need rename the section Name to make
// it distinct
sprintf(pEndSectName, "%c", 'A'+dupSectCount);
dupSectCount++;
}
if (comp == 0)
{
delete pNewSection;
}
else
{
m_sections.InsertAt(i, (LPVOID)pNewSection);
}
return (LPCOMMON_SECTION)m_sections[i];
}