os/security/securityanddataprivacytools/securitytools/certapp/encdec/appuidmap.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
/*
sl@0
     2
* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     3
* All rights reserved.
sl@0
     4
* This component and the accompanying materials are made available
sl@0
     5
* under the terms of the License "Eclipse Public License v1.0"
sl@0
     6
* which accompanies this distribution, and is available
sl@0
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     8
*
sl@0
     9
* Initial Contributors:
sl@0
    10
* Nokia Corporation - initial contribution.
sl@0
    11
*
sl@0
    12
* Contributors:
sl@0
    13
*
sl@0
    14
* Description: 
sl@0
    15
*
sl@0
    16
*/
sl@0
    17
sl@0
    18
sl@0
    19
#include "appuidmap.h"
sl@0
    20
#include <map>
sl@0
    21
sl@0
    22
struct AppMapEntry
sl@0
    23
	{
sl@0
    24
	std::string iDef;
sl@0
    25
	TInt32 iLastDefFileIndex;
sl@0
    26
	};
sl@0
    27
typedef std::map<TUint32, AppMapEntry> AppMap;
sl@0
    28
sl@0
    29
//
sl@0
    30
// Local static vars. This avoids including map etc in the header
sl@0
    31
//
sl@0
    32
static AppMap sAppMap;
sl@0
    33
sl@0
    34
bool AppUidMap::InsertUidDefinition(TInt32 aUid, const std::string &aDef, TInt32 aInputFileIndex,
sl@0
    35
									TInt32 &aLastIndex, std::string &aFirstDef)
sl@0
    36
{
sl@0
    37
	AppMapEntry val;
sl@0
    38
	val.iDef = aDef;
sl@0
    39
	val.iLastDefFileIndex = aInputFileIndex;
sl@0
    40
	AppMap::value_type e(aUid, val);
sl@0
    41
	std::pair<AppMap::iterator,bool> result = sAppMap.insert(e);
sl@0
    42
	if(result.second == true)
sl@0
    43
		{
sl@0
    44
		// Inserted new entry
sl@0
    45
		return true;
sl@0
    46
		}
sl@0
    47
	// Duplicate.
sl@0
    48
	// Save fileIndex of previous definition
sl@0
    49
	aLastIndex = (result.first)->second.iLastDefFileIndex;
sl@0
    50
	aFirstDef = (result.first)->second.iDef;
sl@0
    51
	// Update location of last seen def
sl@0
    52
	(result.first)->second.iLastDefFileIndex = aInputFileIndex;
sl@0
    53
sl@0
    54
	return false;
sl@0
    55
}
sl@0
    56
sl@0
    57
sl@0
    58
sl@0
    59
sl@0
    60
sl@0
    61
sl@0
    62
static EnumEntry *sEnumEntries = 0;
sl@0
    63
sl@0
    64
void AppUidMap::GenerateEnumEntries()
sl@0
    65
{
sl@0
    66
	delete [] sEnumEntries;
sl@0
    67
	sEnumEntries = new EnumEntry[sAppMap.size()+1];
sl@0
    68
	sEnumEntries[sAppMap.size()].iName=0; // Terminate array
sl@0
    69
sl@0
    70
	AppMap::const_iterator it = sAppMap.begin();
sl@0
    71
	for(TUint32 i=0; i < sAppMap.size(); ++i)
sl@0
    72
		{
sl@0
    73
		sEnumEntries[i].iName = (*it).second.iDef.c_str();
sl@0
    74
		sEnumEntries[i].iValue = (*it).first;
sl@0
    75
		++it;
sl@0
    76
		}
sl@0
    77
}
sl@0
    78
sl@0
    79
sl@0
    80
EnumEntry *AppUidMap::EnumEntries()
sl@0
    81
{
sl@0
    82
BULLSEYE_OFF
sl@0
    83
	if(sEnumEntries == 0) FatalError();
sl@0
    84
BULLSEYE_RESTORE
sl@0
    85
	return sEnumEntries;
sl@0
    86
}
sl@0
    87
sl@0
    88
// End of file