#ifndef _DICTIONARY_H__
#define _DICTIONARY_H__
#include <vector>
#include <security_cdsa_utilities/cssmdb.h>
namespace Security {
#define PID_KEY 'pidk'
#define ITEM_KEY 'item'
#define SSUID_KEY 'ssui'
#define DB_NAME 'dbnm'
#define DB_LOCATION 'dblc'
class NameValuePair
{
protected:
uint32 mName;
CssmData mValue;
CssmData CloneData (const CssmData &value);
public:
NameValuePair (uint32 name, const CssmData &value);
NameValuePair (const CssmData &data);
~NameValuePair ();
const uint32 Name () {return mName;}
const CssmData& Value () const {return mValue;}
void Export (CssmData &data) const;
};
typedef std::vector<NameValuePair*> NameValuePairVector;
class NameValueDictionary
{
protected:
NameValuePairVector mVector;
int FindPositionByName (uint32 name) const;
void MakeFromData(const CssmData &data);
public:
NameValueDictionary ();
~NameValueDictionary ();
NameValueDictionary (const CssmData &data);
void Insert (NameValuePair* pair);
void RemoveByName (uint32 name);
const NameValuePair* FindByName (uint32 name) const;
int CountElements () const;
const NameValuePair* GetElement (int which);
void Export (CssmData &data);
static void MakeNameValueDictionaryFromDLDbIdentifier (const DLDbIdentifier &identifier, NameValueDictionary &nvd);
static DLDbIdentifier MakeDLDbIdentifierFromNameValueDictionary (const NameValueDictionary &nvd);
};
};
#endif