📄 resourcesymbolvaluesmap.cpp
字号:
/************************************************************************
*
* Resource ID Organiser Utility Library
*
* (c) Copyright 2000 by Andy Metcalfe (andy.metcalfe@lineone.net)
* All rights reserved.
*
************************************************************************
*
* Filename : ResourceSymbolValuesMap.cpp
*
* Description : CResourceSymbolValuesMap - implementation class used
* by CResourceSymbolBuffer
*
* Compiler : Microsoft Visual C++ 6.0, Service Pack 3 or 4
*
* Target
* Environment : Windows 98/NT
*
* NOTE:
*
* This software is provided "as is" free for personal use. All
* title and copyrights in and to the software, including but not
* limited to any images, text, etc. incorporated into it, are
* owned by Andy Metcalfe, except where acknowledged otherwise.
*
* Your may freely to use this code in your own products, PROVIDED
* this notice is not removed or modified.
*
*
* Visit http://www.resorg.co.uk for latest updates
*
************************************************************************
*
* MODIFICATION HISTORY:
*
* This is a controlled document. See project configuration
* control tool for latest version and full version history.
*
* $Archive: /Projects/AddIns/ResOrg/ResOrgUtils/ResourceSymbolValuesMap.cpp $
* $Revision: 3 $
* $Date: 19/04/01 21:34 $
* $Author: Andy $
*
* $History: ResourceSymbolValuesMap.cpp $
*
* ***************** Version 3 *****************
* User: Andy Date: 19/04/01 Time: 21:34
* Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
* Removed an unnecessary ASSERTion from
* CResourceSymbolValuesMap::Remove()
*
* ***************** Version 2 *****************
* User: Andy Date: 2/03/01 Time: 16:42
* Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
* Removed unnecessary code
*
* ***************** Version 1 *****************
* User: Andy Date: 19/02/01 Time: 8:29
* Created in $/Projects/AddIns/ResOrg/ResOrgUtils
*
*
* ***************** Version 2 *****************
* User: Andy Date: 29/11/00 Time: 18:38
* Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
* Added file banners
*
* $Nokeywords: $
*
************************************************************************/
// ResourceSymbolValuesMap.cpp : implementation file
//
#include "stdafx.h"
#include "ResourceSymbol.h"
#include "ResourceSymbolValuesMap.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CResourceSymbolValuesMap
CResourceSymbolValuesMap::CResourceSymbolValuesMap(void)
{
}
CResourceSymbolValuesMap::~CResourceSymbolValuesMap(void)
{
}
/////////////////////////////////////////////////////////////////////////////
// CResourceSymbolValuesMap operations
BOOL CResourceSymbolValuesMap::Add(CResourceSymbol* pSymbol)
{
UINT uValue = pSymbol->GetValue();
CResourceSymbolList listSymbols;
Lookup(uValue, listSymbols);
listSymbols.AddTail(pSymbol);
SetAt(uValue, listSymbols);
UpdateConflictLists(uValue);
return TRUE;
}
BOOL CResourceSymbolValuesMap::Remove(CResourceSymbol* pSymbol)
{
UINT uValue = pSymbol->GetValue();
CResourceSymbolList listSymbols;
if (Lookup(uValue, listSymbols) )
{
listSymbols.Remove(pSymbol);
if (!listSymbols.IsEmpty() )
{
SetAt(uValue, listSymbols);
}
else
{
RemoveKey(uValue);
}
UpdateConflictLists(uValue);
return TRUE;
}
return FALSE;
}
int CResourceSymbolValuesMap::GetSymbols(UINT uValue,
CResourceSymbolList& rlistSymbols) const
{
rlistSymbols.RemoveAll();
Lookup(uValue, rlistSymbols);
return rlistSymbols.GetCount();
}
int CResourceSymbolValuesMap::GetCount(UINT uValue) const
{
CResourceSymbolList listSymbols;
Lookup(uValue, listSymbols);
return listSymbols.GetCount();
}
/////////////////////////////////////////////////////////////////////////////
// CResourceSymbolValuesMap implementation
void CResourceSymbolValuesMap::UpdateConflictLists(UINT uValue)
{
CResourceSymbolList listSymbols;
if (Lookup(uValue, listSymbols) )
{
// Set up the conflict lists for the symbols with the same value as the new one
CResourceSymbolList listSymbols2;
listSymbols2 = listSymbols; // 'coz I'm not sure if append during iteration is safe (AJM 18/2/2001)
POSITION pos = listSymbols.GetHeadPosition();
while (pos != NULL)
{
CResourceSymbol* pSymbol = listSymbols.GetNext(pos);
if (pSymbol != NULL)
{
pSymbol->GetConflicts().AddTail(&listSymbols2);
pSymbol->GetConflicts().Remove(pSymbol);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -