IMPSengine/enginc/impsdataaccessorapi.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IMPSengine/enginc/impsdataaccessorapi.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,669 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Some classes for describing imps internel data structure
+* 
+*/
+
+
+#ifndef MImpsDataAccessorApi_H
+#define MImpsDataAccessorApi_H
+
+//  INCLUDES
+#include "Impsservercommon.h"
+
+// CONSTANTS
+
+enum TImpsDataType
+    {
+    EImpsDataTypeNone = 0,   // This is for elements not having value in DTD
+    EImpsDataTypeInt = 1,
+    EImpsDataTypeDesc = 2,
+    EImpsDataTypeDesc8 = 3,
+    EImpsDataTypeBoolean = 4,
+    EImpsDataTypeNotSupported = 5,   // Data accessor does not support this
+    EImpsDataTypeExt = 6,    // Data type for extension attributes
+    EImpsDataTypeContentData = 7    // special data type for content data handling
+    };
+
+enum TImpsKeyType
+    {
+    EImpsKeyTypeIM = 0,  // IM
+    EImpsKeyTypePre = 1  // Presence
+    };
+
+
+// CLASS DECLARATION
+class CImpsFields;
+class RFs;
+
+// MACROS
+#define GET_INDEX( aElemvalue ) ( (aElemvalue>>16 ) & 0xFFFF )
+#define GET_ENUM( aElemvalue ) ( aElemvalue& 0xFFFF )
+#define CREATEKEY( elem, index ) ( ( elem& 0xFFFF ) + ( index<< 16 ) )
+// if Upper bit is one then we have presence attribute
+#define IS_PRESENCE( aElemvalue ) ( aElemvalue>>31 )
+
+// DATA TYPES
+
+enum TImpsPresenceContent
+    {
+    EImpsKeyPRPresenceSubList                           = KImpsKeyPresenceSubList, // duplicate!!!
+    EImpsKeyPRQualifier                      			= KImpsKeyPRQualifier,
+    EImpsKeyPRPresenceValue                             = KImpsKeyPRPresenceValue,
+    EImpsKeyPROnlineStatus                              = KImpsKeyPROnlineStatus,
+    EImpsKeyPRRegistration                              = KImpsKeyPRRegistration,
+    EImpsKeyPRFreeTextLocation                          = KImpsKeyPRFreeTextLocation,
+    EImpsKeyPRPLMN                                      = KImpsKeyPRPLMN,
+    EImpsKeyPRUserAvailability                          = KImpsKeyPRUserAvailability,
+    EImpsKeyPRPreferredLanguage                         = KImpsKeyPRPreferredLanguage,
+    EImpsKeyPRStatusText                                = KImpsKeyPRStatusText,
+    EImpsKeyPRStatusMood                                = KImpsKeyPRStatusMood,
+    EImpsKeyPRAlias                                     = KImpsKeyPRAlias,
+    EImpsKeyPRClientInfo                                = KImpsKeyPRClientInfo,
+    EImpsKeyPRClientType                                = KImpsKeyClientType,
+    EImpsKeyPRDevManufacturer                           = KImpsKeyPRDevManufacturer,
+    EImpsKeyPRClientProducer                            = KImpsKeyPRClientProducer,
+    EImpsKeyPRModel                                     = KImpsKeyPRModel,
+    EImpsKeyPRClientVersion                             = KImpsKeyPRClientVersion,
+    EImpsKeyPRLanguage                                  = KImpsKeyPRLanguage,
+    EImpsKeyPRTimeZone                                  = KImpsKeyPRTimeZone,
+    EImpsKeyPRZone                                      = KImpsKeyPRZone,
+    EImpsKeyPRGeoLocation                               = KImpsKeyPRGeoLocation,
+    EImpsKeyPRLongitude                                 = KImpsKeyPRLongitude,
+    EImpsKeyPRLatitude                                  = KImpsKeyPRLatitude,
+    EImpsKeyPRAltitude                                  = KImpsKeyPRAltitude,
+    EImpsKeyPRAccuracy                                  = KImpsKeyPRAccuracy,
+    EImpsKeyPRAddress                                   = KImpsKeyPRAddress,
+    EImpsKeyPRCountry                                   = KImpsKeyPRCountry,
+    EImpsKeyPRCity                                      = KImpsKeyPRCity,
+    EImpsKeyPRStreet                                    = KImpsKeyPRStreet,
+    EImpsKeyPRCrossing1                                 = KImpsKeyPRCrossing1,
+    EImpsKeyPRCrossing2                                 = KImpsKeyPRCrossing2,
+    EImpsKeyPRBuilding                                  = KImpsKeyPRBuilding,
+    EImpsKeyPRNamedArea                                 = KImpsKeyPRNamedArea,
+    EImpsKeyPRCommCap                                   = KImpsKeyPRCommCap,
+    EImpsKeyPRCommC                                     = KImpsKeyPRCommC,
+    EImpsKeyPRCap                                       = KImpsKeyPRCap,
+    EImpsKeyPRStatus                                    = KImpsKeyPRStatus,
+    EImpsKeyPRContact                                   = KImpsKeyPRContact,
+    EImpsKeyPRNote                                      = KImpsKeyPRNote,
+    EImpsKeyPRPreferredContacts                         = KImpsKeyPRPreferredContacts,
+    EImpsKeyPRAddrPref                                  = KImpsKeyPRAddrPref,
+    EImpsKeyPRPrefC                                     = KImpsKeyPRPrefC,
+    EImpsKeyPRCaddr                                     = KImpsKeyPRCaddr,
+    EImpsKeyPRCstatus                                   = KImpsKeyPRCstatus,
+    EImpsKeyPRCname                                     = KImpsKeyPRCname,
+    EImpsKeyPRCpriority                                 = KImpsKeyPRCpriority,
+    EImpsKeyPRStatusContent                             = KImpsKeyPRStatusContent,
+    EImpsKeyPRDirectContent                             = KImpsKeyPRDirectContent,
+    EImpsKeyPRReferredContent                           = KImpsKeyPRReferredContent,
+    EImpsKeyPRContactInfo                               = KImpsKeyPRContactInfo,
+    EImpsKeyPRContainedvCard                            = KImpsKeyPRContainedvCard,
+    EImpsKeyPRReferredvCard                             = KImpsKeyPRReferredvCard,
+    EImpsKeyPRExt                                       = KImpsKeyPRExt,
+
+    // CSP 1.2
+    EImpsKeyPRInf_link                                  = KImpsKeyInf_link,
+    EImpsKeyPRInfoLink                                  = KImpsKeyInfoLink,
+    EImpsKeyPRLink                                      = KImpsKeyLink,
+    EImpsKeyPRText                                      = KImpsKeyText,
+
+    EImpsKeyPREND                                       = KImpsKeyPREND
+    };
+
+enum TImpsContent
+    {
+    EImpsKeySession                                     = KImpsKeySession,
+    EImpsKeySessionDescriptor                           = KImpsKeySessionDescriptor,
+    EImpsKeySessionType                                 = KImpsKeySessionType,
+    EImpsKeySessionID                                   = KImpsKeySessionID,
+    EImpsKeyTransaction                                 = KImpsKeyTransaction,
+    EImpsKeyTransactionDescriptor                       = KImpsKeyTransactionDescriptor,
+    EImpsKeyTransactionMode                             = KImpsKeyTransactionMode,
+    EImpsKeyTransactionID                               = KImpsKeyTransactionID,
+    EImpsKeyPoll                                        = KImpsKeyPoll,
+    EImpsKeyTransactionContent                          = KImpsKeyTransactionContent,
+    EImpsKeyStatus                                      = KImpsKeyStatus,
+    EImpsKeyPolling_Request                             = KImpsKeyPolling_Request,
+    EImpsKeyLogin_Request                               = KImpsKeyLogin_Request,
+    EImpsKeyLogin_Response                              = KImpsKeyLogin_Response,
+    EImpsKeyService_Request                             = KImpsKeyService_Request,
+    EImpsKeyService_Response                            = KImpsKeyService_Response,
+    EImpsKeyClientCapability_Request                    = KImpsKeyClientCapability_Request,
+    EImpsKeyClientCapability_Response                   = KImpsKeyClientCapability_Response,
+    EImpsKeyLogout_Request                              = KImpsKeyLogout_Request,
+    EImpsKeyDisconnect                                  = KImpsKeyDisconnect,
+    EImpsKeyKeepAlive_Request                           = KImpsKeyKeepAlive_Request,
+    EImpsKeyKeepAlive_Response                          = KImpsKeyKeepAlive_Response,
+    EImpsKeyGetSPInfo_Request                           = KImpsKeyGetSPInfo_Request,
+    EImpsKeyGetSPInfo_Response                          = KImpsKeyGetSPInfo_Response,
+    EImpsKeySearch_Request                              = KImpsKeySearch_Request,
+    EImpsKeyStopSearch_Request                          = KImpsKeyStopSearch_Request,
+    EImpsKeySearch_Response                             = KImpsKeySearch_Response,
+    EImpsKeyCompletionFlag                              = KImpsKeyCompletionFlag,
+    EImpsKeyInvite_Request                              = KImpsKeyInvite_Request,
+    EImpsKeyInvite_Response                             = KImpsKeyInvite_Response,
+    EImpsKeyInviteUser_Request                          = KImpsKeyInviteUser_Request,
+    EImpsKeyInviteUser_Response                         = KImpsKeyInviteUser_Response,
+    EImpsKeyCancelInvite_Request                        = KImpsKeyCancelInvite_Request,
+    EImpsKeyCancelInviteUser_Request                    = KImpsKeyCancelInviteUser_Request,
+    EImpsKeySubscribePresence_Request                   = KImpsKeySubscribePresence_Request,
+    EImpsKeyUnsubscribePresence_Request                 = KImpsKeyUnsubscribePresence_Request,
+    EImpsKeyPresenceNotification_Request                = KImpsKeyPresenceNotification_Request,
+    EImpsKeyGetWatcherList_Request                      = KImpsKeyGetWatcherList_Request,
+    EImpsKeyGetWatcherList_Response                     = KImpsKeyGetWatcherList_Response,
+    EImpsKeyGetPresence_Request                         = KImpsKeyGetPresence_Request,
+    EImpsKeyGetPresence_Response                        = KImpsKeyGetPresence_Response,
+    EImpsKeyPresenceAuth_Request                        = KImpsKeyPresenceAuth_Request,
+    EImpsKeyPresenceAuth_User                           = KImpsKeyPresenceAuth_User,
+    EImpsKeyCancelAuth_Request                          = KImpsKeyCancelAuth_Request,
+    EImpsKeyUpdatePresence_Request                      = KImpsKeyUpdatePresence_Request,
+    EImpsKeyGetList_Request                             = KImpsKeyGetList_Request,
+    EImpsKeyGetList_Response                            = KImpsKeyGetList_Response,
+    EImpsKeyCreateList_Request                          = KImpsKeyCreateList_Request,
+    EImpsKeyDeleteList_Request                          = KImpsKeyDeleteList_Request,
+    EImpsKeyListManage_Request                          = KImpsKeyListManage_Request,
+    EImpsKeyListManage_Response                         = KImpsKeyListManage_Response,
+    EImpsKeyCreateAttributeList_Request                 = KImpsKeyCreateAttributeList_Request,
+    EImpsKeyDeleteAttributeList_Request                 = KImpsKeyDeleteAttributeList_Request,
+    EImpsKeyGetAttributeList_Request                    = KImpsKeyGetAttributeList_Request,
+    EImpsKeyGetAttributeList_Response                   = KImpsKeyGetAttributeList_Response,
+    EImpsKeySendMessage_Request                         = KImpsKeySendMessage_Request,
+    EImpsKeySendMessage_Response                        = KImpsKeySendMessage_Response,
+    EImpsKeySetDeliveryMethod_Request                   = KImpsKeySetDeliveryMethod_Request,
+    EImpsKeyGetMessageList_Request                      = KImpsKeyGetMessageList_Request,
+    EImpsKeyGetMessageList_Response                     = KImpsKeyGetMessageList_Response,
+    EImpsKeyRejectMessage_Request                       = KImpsKeyRejectMessage_Request,
+    EImpsKeyMessageNotification                         = KImpsKeyMessageNotification,
+    EImpsKeyGetMessage_Request                          = KImpsKeyGetMessage_Request,
+    EImpsKeyGetMessage_Response                         = KImpsKeyGetMessage_Response,
+    EImpsKeyNewMessage                                  = KImpsKeyNewMessage,
+    EImpsKeyMessageDelivered                            = KImpsKeyMessageDelivered,
+    EImpsKeyDeliveryReport_Request                      = KImpsKeyDeliveryReport_Request,
+    EImpsKeyDeliveryTime                                = KImpsKeyDeliveryTime,
+    EImpsKeyForwardMessage_Request                      = KImpsKeyForwardMessage_Request,
+    EImpsKeyGetBlockedList_Request                      = KImpsKeyGetBlockedList_Request,
+    EImpsKeyGetBlockedList_Response                     = KImpsKeyGetBlockedList_Response,
+    EImpsKeyBlockEntity_Request                         = KImpsKeyBlockEntity_Request,
+    EImpsKeyCreateGroup_Request                         = KImpsKeyCreateGroup_Request,
+    EImpsKeyDeleteGroup_Request                         = KImpsKeyDeleteGroup_Request,
+    EImpsKeyJoinGroup_Request                           = KImpsKeyJoinGroup_Request,
+    EImpsKeyJoinGroup                                   = KImpsKeyJoinGroup,
+    EImpsKeySubscribeNotification                       = KImpsKeySubscribeNotification,
+    EImpsKeyJoinGroup_Response                          = KImpsKeyJoinGroup_Response,
+    EImpsKeyLeaveGroup_Request                          = KImpsKeyLeaveGroup_Request,
+    EImpsKeyLeaveGroup_Response                         = KImpsKeyLeaveGroup_Response,
+    EImpsKeyGetGroupMembers_Request                     = KImpsKeyGetGroupMembers_Request,
+    EImpsKeyGetGroupMembers_Response                    = KImpsKeyGetGroupMembers_Response,
+    EImpsKeyAddGroupMembers_Request                     = KImpsKeyAddGroupMembers_Request,
+    EImpsKeyRemoveGroupMembers_Request                  = KImpsKeyRemoveGroupMembers_Request,
+    EImpsKeyMemberAccess_Request                        = KImpsKeyMemberAccess_Request,
+    EImpsKeyGetGroupProps_Request                       = KImpsKeyGetGroupProps_Request,
+    EImpsKeyGetGroupProps_Response                      = KImpsKeyGetGroupProps_Response,
+    EImpsKeySetGroupProps_Request                       = KImpsKeySetGroupProps_Request,
+    EImpsKeyRejectList_Request                          = KImpsKeyRejectList_Request,
+    EImpsKeyRejectList_Response                         = KImpsKeyRejectList_Response,
+    EImpsKeySubscribeGroupNotice_Request                = KImpsKeySubscribeGroupNotice_Request,
+    EImpsKeySubscribeGroupNotice_Response               = KImpsKeySubscribeGroupNotice_Response,
+    EImpsKeyGroupChangeNotice                           = KImpsKeyGroupChangeNotice,
+    EImpsKeyDigestBytes                                 = KImpsKeyDigestBytes,
+    EImpsKeyDigestSchema                                = KImpsKeyDigestSchema,
+    EImpsKeyPassword                                    = KImpsKeyPassword,
+    EImpsKeyNonce                                       = KImpsKeyNonce,
+    EImpsKeyCapabilityRequest                           = KImpsKeyCapabilityRequest,
+    EImpsKeyCapabilityList                              = KImpsKeyCapabilityList,
+    EImpsKeyClientType                                  = KImpsKeyClientType,
+    EImpsKeyInitialDeliveryMethod                       = KImpsKeyInitialDeliveryMethod,
+    EImpsKeyAnyContent                                  = KImpsKeyAnyContent,
+    EImpsKeyAcceptedCharSet                             = KImpsKeyAcceptedCharSet,
+    EImpsKeyAcceptedContentType                         = KImpsKeyAcceptedContentType,
+    EImpsKeyAcceptedTransferEncoding                    = KImpsKeyAcceptedTransferEncoding,
+    EImpsKeyAcceptedContentLength                       = KImpsKeyAcceptedContentLength,
+    EImpsKeySupportedBearer                             = KImpsKeySupportedBearer,
+    EImpsKeyMultiTrans                                  = KImpsKeyMultiTrans,
+    EImpsKeyParserSize                                  = KImpsKeyParserSize,
+    EImpsKeySupportedCIRMethod                          = KImpsKeySupportedCIRMethod,
+    EImpsKeyUDPPort                                     = KImpsKeyUDPPort,
+    EImpsKeyTCPAddress                                  = KImpsKeyTCPAddress,
+    EImpsKeyTCPPort                                     = KImpsKeyTCPPort,
+    EImpsKeyServerPollMin                               = KImpsKeyServerPollMin,
+    EImpsKeyDefaultLanguage                             = KImpsKeyDefaultLanguage,
+    EImpsKeyResult                                      = KImpsKeyResult,
+    EImpsKeyCode                                        = KImpsKeyCode,
+    EImpsKeyDescription                                 = KImpsKeyDescription,
+    EImpsKeyDetailedResult                              = KImpsKeyDetailedResult,
+    EImpsKeySessionCookie                               = KImpsKeySessionCookie,
+    EImpsKeySender                                      = KImpsKeySender,
+    EImpsKeyRecipient                                   = KImpsKeyRecipient,
+    EImpsKeyUser                                        = KImpsKeyUser,
+    EImpsKeyGroup                                       = KImpsKeyGroup,
+    EImpsKeyUserID                                      = KImpsKeyUserID,
+    EImpsKeyClientID                                    = KImpsKeyClientID,
+    EImpsKeyGroupID                                     = KImpsKeyGroupID,
+    EImpsKeyMessageID                                   = KImpsKeyMessageID,
+    EImpsKeyMessageURI                                  = KImpsKeyMessageURI,
+    EImpsKeyScreenName                                  = KImpsKeyScreenName,
+    EImpsKeyNickName                                    = KImpsKeyNickName,
+    EImpsKeyURLList                                     = KImpsKeyURLList,
+    EImpsKeyURL                                         = KImpsKeyURL,
+    EImpsKeyMSISDN                                      = KImpsKeyMSISDN,
+    EImpsKeyGroupList                                   = KImpsKeyGroupList,
+    EImpsKeyUserList                                    = KImpsKeyUserList,
+    EImpsKeyContactList                                 = KImpsKeyContactList,
+    EImpsKeyDefaultContactList                          = KImpsKeyDefaultContactList,
+    EImpsKeyNickList                                    = KImpsKeyNickList,
+    EImpsKeyAddNickList                                 = KImpsKeyAddNickList,
+    EImpsKeyRemoveNickList                              = KImpsKeyRemoveNickList,
+    EImpsKeyDefaultList                                 = KImpsKeyDefaultList,
+    EImpsKeySearchPairList                              = KImpsKeySearchPairList,
+    EImpsKeySearchElement                               = KImpsKeySearchElement,
+    EImpsKeySearchString                                = KImpsKeySearchString,
+    EImpsKeySearchLimit                                 = KImpsKeySearchLimit,
+    EImpsKeySearchID                                    = KImpsKeySearchID,
+    EImpsKeySearchIndex                                 = KImpsKeySearchIndex,
+    EImpsKeySearchFindings                              = KImpsKeySearchFindings,
+    EImpsKeySearchResult                                = KImpsKeySearchResult,
+    EImpsKeyInviteID                                    = KImpsKeyInviteID,
+    EImpsKeyInviteType                                  = KImpsKeyInviteType,
+    EImpsKeyInviteNote                                  = KImpsKeyInviteNote,
+    EImpsKeyAcceptance                                  = KImpsKeyAcceptance,
+    EImpsKeyResponseNote                                = KImpsKeyResponseNote,
+    EImpsKeyDefaultAttributeList                        = KImpsKeyDefaultAttributeList,
+    EImpsKeyPresence                                    = KImpsKeyPresence,
+    EImpsKeyPresenceSubList                             = KImpsKeyPresenceSubList,
+    EImpsKeyKeepAliveTime                               = KImpsKeyKeepAliveTime,
+    EImpsKeyTimeToLive                                  = KImpsKeyTimeToLive,
+    EImpsKeySName                                       = KImpsKeySName,
+    EImpsKeyName                                        = KImpsKeyName,
+    EImpsKeyValue                                       = KImpsKeyValue,
+    EImpsKeyValidity                                    = KImpsKeyValidity,
+    EImpsKeyMessageInfo                                 = KImpsKeyMessageInfo,
+    EImpsKeyDateTime                                    = KImpsKeyDateTime,
+    EImpsKeyMessageCount                                = KImpsKeyMessageCount,
+    EImpsKeyDeliveryReport                              = KImpsKeyDeliveryReport,
+    EImpsKeyDeliveryMethod                              = KImpsKeyDeliveryMethod,
+    EImpsKeyBlockList                                   = KImpsKeyBlockList,
+    EImpsKeyGrantList                                   = KImpsKeyGrantList,
+    EImpsKeyEntityList                                  = KImpsKeyEntityList,
+    EImpsKeyAddList                                     = KImpsKeyAddList,
+    EImpsKeyRemoveList                                  = KImpsKeyRemoveList,
+    EImpsKeyInUse                                       = KImpsKeyInUse,
+    EImpsKeyContactListProperties                       = KImpsKeyContactListProperties,
+    EImpsKeyGroupProperties                             = KImpsKeyGroupProperties,
+    EImpsKeyOwnProperties                               = KImpsKeyOwnProperties,
+    EImpsKeyProperty                                    = KImpsKeyProperty,
+    EImpsKeyWelcomeNote                                 = KImpsKeyWelcomeNote,
+    EImpsKeyJoinedRequest                               = KImpsKeyJoinedRequest,
+    EImpsKeyAdmin                                       = KImpsKeyAdmin,
+    EImpsKeyMod                                         = KImpsKeyMod,
+    EImpsKeyUsers                                       = KImpsKeyUsers,
+    EImpsKeySubscribeType                               = KImpsKeySubscribeType,
+    EImpsKeyJoined                                      = KImpsKeyJoined,
+    EImpsKeyLeft                                        = KImpsKeyLeft,
+    EImpsKeyLogo                                        = KImpsKeyLogo,
+    EImpsKeyContentType                                 = KImpsKeyContentType,
+    EImpsKeyContentData                                 = KImpsKeyContentData,
+    EImpsKeyContentSize                                 = KImpsKeyContentSize,
+    EImpsKeyContentEncoding                             = KImpsKeyContentEncoding,
+    EImpsKeyAllFunctionsRequest                         = KImpsKeyAllFunctionsRequest,
+    EImpsKeyAllFunctions                                = KImpsKeyAllFunctions,
+    EImpsKeyFunctions                                   = KImpsKeyFunctions,
+    EImpsKeyWVCSPFeat                                   = KImpsKeyWVCSPFeat,
+    EImpsKeyFundamentalFeat                             = KImpsKeyFundamentalFeat,
+    EImpsKeyPresenceFeat                                = KImpsKeyPresenceFeat,
+    EImpsKeyIMFeat                                      = KImpsKeyIMFeat,
+    EImpsKeyGroupFeat                                   = KImpsKeyGroupFeat,
+    EImpsKeyServiceFunc                                 = KImpsKeyServiceFunc,
+    EImpsKeySearchFunc                                  = KImpsKeySearchFunc,
+    EImpsKeyInviteFunc                                  = KImpsKeyInviteFunc,
+    EImpsKeyContListFunc                                = KImpsKeyContListFunc,
+    EImpsKeyPresenceAuthFunc                            = KImpsKeyPresenceAuthFunc,
+    EImpsKeyPresenceDeliverFunc                         = KImpsKeyPresenceDeliverFunc,
+    EImpsKeyAttListFunc                                 = KImpsKeyAttListFunc,
+    EImpsKeyIMSendFunc                                  = KImpsKeyIMSendFunc,
+    EImpsKeyIMReceiveFunc                               = KImpsKeyIMReceiveFunc,
+    EImpsKeyIMAuthFunc                                  = KImpsKeyIMAuthFunc,
+    EImpsKeyGroupMgmtFunc                               = KImpsKeyGroupMgmtFunc,
+    EImpsKeyGroupUseFunc                                = KImpsKeyGroupUseFunc,
+    EImpsKeyGroupAuthFunc                               = KImpsKeyGroupAuthFunc,
+    EImpsKeyGETSPI                                      = KImpsKeyGETSPI,
+    EImpsKeySRCH                                        = KImpsKeySRCH,
+    EImpsKeySTSRC                                       = KImpsKeySTSRC,
+    EImpsKeyINVIT                                       = KImpsKeyINVIT,
+    EImpsKeyCAINV                                       = KImpsKeyCAINV,
+    EImpsKeyGCLI                                        = KImpsKeyGCLI,
+    EImpsKeyCCLI                                        = KImpsKeyCCLI,
+    EImpsKeyDCLI                                        = KImpsKeyDCLI,
+    EImpsKeyMCLS                                        = KImpsKeyMCLS,
+    EImpsKeyGETWL                                       = KImpsKeyGETWL,
+    EImpsKeyREACT                                       = KImpsKeyREACT,
+    EImpsKeyCAAUT                                       = KImpsKeyCAAUT,
+    EImpsKeyGETPR                                       = KImpsKeyGETPR,
+    EImpsKeyUPDPR                                       = KImpsKeyUPDPR,
+    EImpsKeyCALI                                        = KImpsKeyCALI,
+    EImpsKeyDALI                                        = KImpsKeyDALI,
+    EImpsKeyGALS                                        = KImpsKeyGALS,
+    EImpsKeyMDELIV                                      = KImpsKeyMDELIV,
+    EImpsKeyFWMSG                                       = KImpsKeyFWMSG,
+    EImpsKeySETD                                        = KImpsKeySETD,
+    EImpsKeyGETLM                                       = KImpsKeyGETLM,
+    EImpsKeyGETM                                        = KImpsKeyGETM,
+    EImpsKeyREJCM                                       = KImpsKeyREJCM,
+    EImpsKeyNOTIF                                       = KImpsKeyNOTIF,
+    EImpsKeyNEWM                                        = KImpsKeyNEWM,
+    EImpsKeyGLBLU                                       = KImpsKeyGLBLU,
+    EImpsKeyBLENT                                       = KImpsKeyBLENT,
+    EImpsKeyCREAG                                       = KImpsKeyCREAG,
+    EImpsKeyDELGR                                       = KImpsKeyDELGR,
+    EImpsKeyGETGP                                       = KImpsKeyGETGP,
+    EImpsKeySETGP                                       = KImpsKeySETGP,
+    EImpsKeySUBGCN                                      = KImpsKeySUBGCN,
+    EImpsKeyGRCHN                                       = KImpsKeyGRCHN,
+    EImpsKeyGETGM                                       = KImpsKeyGETGM,
+    EImpsKeyADDGM                                       = KImpsKeyADDGM,
+    EImpsKeyRMVGM                                       = KImpsKeyRMVGM,
+    EImpsKeyMBRAC                                       = KImpsKeyMBRAC,
+    EImpsKeyREJEC                                       = KImpsKeyREJEC,
+    EImpsKeyPureData                                    = KImpsKeyPureData,
+    // CSP 1.2 additions
+    EImpsKeyExtBlock                                    = KImpsKeyExtBlock,
+    EImpsKeyAPIClient                                   = KImpsKeyAPIClient,
+    EImpsKeyAgreedCapabilityList                        = KImpsKeyAgreedCapabilityList,
+    EImpsKeyExtended_Request                            = KImpsKeyExtended_Request,
+    EImpsKeyExtended_Response                           = KImpsKeyExtended_Response,
+    EImpsKeyExtendedData                                = KImpsKeyExtendedData,
+    EImpsKeyOtherServer                                 = KImpsKeyOtherServer,
+    EImpsKeyPresenceAttributeNSName                     = KImpsKeyPresenceAttributeNSName,
+    EImpsKeyReceiveList                                 = KImpsKeyReceiveList,
+    EImpsKeySessionNSName                               = KImpsKeySessionNSName,
+    EImpsKeyTransactionNSName                           = KImpsKeyTransactionNSName,
+    EImpsKeyVerifyID_Request                            = KImpsKeyVerifyID_Request,
+    EImpsKeyMF                                          = KImpsKeyMF,
+    EImpsKeyMG                                          = KImpsKeyMG,
+    EImpsKeyMM                                          = KImpsKeyMM,
+    EImpsKeyAuto_Subscribe                              = KImpsKeyAuto_Subscribe,
+    EImpsKeyGetReactiveAuthStatus_Request               = KImpsKeyGetReactiveAuthStatus_Request,
+    EImpsKeyGetReactiveAuthStatus_Response              = KImpsKeyGetReactiveAuthStatus_Response,
+    EImpsKeyAdminMapList                                = KImpsKeyAdminMapList,
+    EImpsKeyAdminMapping                                = KImpsKeyAdminMapping,
+    EImpsKeyGetJoinedUsers_Request                      = KImpsKeyGetJoinedUsers_Request,
+    EImpsKeyGetJoinedUsers_Respone                      = KImpsKeyGetJoinedUsers_Respone,
+    EImpsKeyMapping                                     = KImpsKeyMapping,
+    EImpsKeyUserMapList                                 = KImpsKeyUserMapList,
+    EImpsKeyUserMapping                                 = KImpsKeyUserMapping,
+    EImpsKeyGETAUT                                      = KImpsKeyGETAUT,
+    EImpsKeyGETJU                                       = KImpsKeyGETJU,
+    EImpsKeyMP                                          = KImpsKeyMP,
+    EImpsKeyVRID                                        = KImpsKeyVRID,
+    EImpsKeyVerifyIDFunc                                = KImpsKeyVerifyIDFunc,
+    EImpsKeyCIR                                         = KImpsKeyCIR,
+    EImpsKeyDomain                                      = KImpsKeyDomain,
+    EImpsKeyHistoryPeriod                               = KImpsKeyHistoryPeriod,
+    EImpsKeyIDList                                      = KImpsKeyIDList,
+    EImpsKeyMaxWatcherList                              = KImpsKeyMaxWatcherList,
+    EImpsKeyReactiveAuthState                           = KImpsKeyReactiveAuthState,
+    EImpsKeyReactiveAuthStatus                          = KImpsKeyReactiveAuthStatus,
+    EImpsKeyReactiveAuthStatusList                      = KImpsKeyReactiveAuthStatusList,
+    EImpsKeyWatcher                                     = KImpsKeyWatcher,
+    EImpsKeyWatcherStatus                               = KImpsKeyWatcherStatus,
+    EImpsKeyVersionList                                 = KImpsKeyVersionList,
+    EImpsKeyEND                                         = KImpsKeyEND
+    };
+
+// CLASS DECLARATION
+
+/**
+*  MImpsKey class
+*  Pure virtual key class
+*/
+class MImpsKey
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Destructor
+        */
+        virtual void Destroy() = 0;
+
+    public: // New functions
+
+        /**
+        * Add new elem to the key
+        * @param aElemvalue Element value
+        * @param aKeyType  Key type
+        * @return void
+        */
+        virtual void AddL( const TInt aElemvalue ,
+                           enum TImpsKeyType aKeyType  = EImpsKeyTypeIM ) = 0;
+
+        /**
+        * Count the elements in the key
+        * @return TInt Number of elements in key
+        */
+        virtual TInt Count( ) const = 0;
+
+        /**
+        * Pop the last element from the key
+        * @param how many items to pop. default is 1
+        * If too much is tried the the function leaves
+        * @return void
+        */
+        virtual void PopL( TInt aCount = 1 ) = 0;
+
+        /**
+        * Get the requested element from the key
+        * @return TInt
+        */
+        virtual TInt GetElementL( const TInt aIndex,
+                                  TImpsKeyType& aKeyType ) const = 0;
+
+        /**
+        * Replaces the last element in the key
+        * @return void
+        */
+        virtual void ReplaceLastL( const TInt aElemvalue,
+                                   enum TImpsKeyType = EImpsKeyTypeIM ) = 0;
+
+        /**
+        * Resets the key
+        * @return void
+        */
+        virtual void Reset() = 0;
+
+        /**
+        * Equal operator
+        * @param aKey to compare with
+        * @return 1 = true, 0 is false
+        */
+        virtual TInt Compare( MImpsKey &aKey ) = 0;
+    };
+
+
+/**
+*  If restore functions return EFalse then the output parameter is undefined
+*/
+class MImpsDataAccessor
+    {
+    public:
+        /**
+        * Accessor creates an instance of MImpsKey entity.
+        * It is NOT deleted by Accessor! You must do that yourself.
+        * @return MImpsKey new key
+        */
+        virtual MImpsKey* NewKeyL() = 0;
+
+        /**
+        * descriptor value mutator
+        * key is a byte sequence, which defines how value is stored
+        * @param aKey Key
+        * @param aValue Value
+        */
+        virtual void StoreDescL( MImpsKey* aKey, TPtrC aValue ) = 0;
+
+        /**
+        * descriptor value mutator
+        * key is a byte sequence, which defines how value is stored
+        * @param aKey Key
+        * @param aValue Value
+        */
+        virtual void StoreDesc8L( MImpsKey* aKey, TPtrC8 aValue ) = 0;
+
+        /**
+        * integer value mutator
+        * key is a byte sequence, which defines how value is stored
+        * @param aKey Key
+        * @param aValue Value
+        */
+        virtual void StoreIntegerL( MImpsKey* aKey, TInt aValue ) = 0;
+
+        /**
+        * boolean value mutator
+        * key is a byte sequence, which defines how value is stored
+        * @param aKey Key
+        * @param aValue Value
+        */
+        virtual void StoreBooleanL( MImpsKey* aKey, TBool aValue ) = 0;
+
+        /**
+        * store empty value
+        * key is a byte sequence, which defines how value is stored
+        * @param aKey Key
+        */
+        virtual void StoreEmptyL( MImpsKey* aKey ) = 0;
+
+        /**
+        * extension attribute mutator
+        * key is a byte sequence, which defines how value is stored
+        * @param aKey Key
+        * @param aName Extension attribute name
+        * @param aValue Extension attribute value
+        */
+        virtual void StoreExtL( MImpsKey* aKey,
+                                TPtrC8 aName, TPtrC8 aValue ) = 0;
+
+        /**
+        * descriptor value accessor
+        * Function return EFalse if key is not found
+        * Function return ETrue if key is found
+        * @param aKey Key for restore
+        * @param aDes OUT Pointer to TDesC object.
+        */
+        virtual TBool RestoreDescL( MImpsKey* aKey, TDesC*& aDes ) = 0;
+
+        /**
+        * descriptor value accessor
+        * Function return EFalse if key is not found
+        * Function return ETrue if key is found
+        * @param aKey Key for restore
+        * @param aBuf OUT Pointer to TDesC8 object
+        */
+        virtual TBool RestoreDesc8L( MImpsKey* aKey,  TDesC8*& aDes ) = 0;
+
+        /**
+        * integer value accessor
+        * Function return EFalse if key is not found
+        * Function return ETrue if key is found
+        * @param aKey Key for restore
+        * @param aBuf OUT TInt object
+        */
+        virtual TBool RestoreIntegerL( MImpsKey* aKey, TInt& aInt ) = 0;
+
+        /**
+        * Boolean value accessor
+        * Function return EFalse if key is not found
+        * Function return ETrue if key is found
+        * @param aKey Key for restore
+        * @param aBuf OUT Boolean object
+        */
+        virtual TBool RestoreBooleanL( MImpsKey* aKey, TBool& aBool ) = 0;
+
+        /**
+        * empty value accessor
+        * Function return EFalse if key is not found
+        * Function return ETrue if key is found
+        * @param aKey Key for restore
+        */
+        virtual TBool RestoreEmptyL( MImpsKey* aKey ) = 0;
+
+        /**
+        * extension attribute accessor
+        * Function return EFalse if key is not found
+        * Function return ETrue if key is found
+        * @param aKey Key for restore
+        * @param aName OUT Pointer to TDesC8 object
+        * @param aValue OUT Pointer to TDesC8 object
+        */
+        virtual TBool RestoreExtL( MImpsKey* aKey,
+                                   TDesC8*& aName, TDesC8*& aValue ) = 0;
+
+        /**
+        * data type accessor
+        * Leaves with KErrArgument if illegal key not in WV DTD.
+        * return data type. Note that one possible value is "not supported".
+        * @param aKey Key type
+        * @return TImpsDataType Datatype
+        */
+        virtual TImpsDataType KeyTypeL( MImpsKey* aKey ) = 0;
+
+        /**
+        * Finds the alternative key
+        * This function finds if the supplied key has a child in the
+        * datastorage and returns the information of the element.
+        * This is usefull with e.g. TransactionContent
+        * @param aKey key in
+        * @param aEnum Enum value out
+        * @param aIndex index out
+        * @param aType type out
+        * @return ETrue if found, EFalse if not found
+        */
+        virtual TBool RestoreAlternativeL( const MImpsKey* aKey,
+                                           TInt& aEnum,
+                                           TInt& aIndex,
+                                           TImpsKeyType& aType ) const = 0;
+
+        /**
+        * Checks if the key exists
+        * This function finds if the supplied key exists as it self or with
+        * children and returns ETrue or EFalse
+        * @param aKey key in
+        * @return ETrue if found, EFalse if not found
+        */
+        virtual TBool CheckBranchExistenceL( const MImpsKey* aKey ) const = 0;
+
+        /**
+        * Copy specific part of the message to the current message
+        * @param aSource where to copy data elements
+        * @param aKey which part of message is copied. NULL means that all data
+        *        is copied.
+        */
+        virtual void CopyDataL(
+            MImpsDataAccessor& aSource,
+            MImpsKey* aKey = NULL ) = 0;
+
+        /**
+        * Get CImpsFields
+        * @return CImpsFields*
+        */
+        virtual CImpsFields* GetImpsFields( ) const = 0;
+
+#ifdef _DEBUG
+        virtual void DumpToFileL( RFs& aFs, const TDesC& aFilename ) = 0;
+#endif
+    };
+
+
+
+#endif      // MImpsDataAccessorApi_H
+
+// End of File