IMPSengine/enginc/impsdataaccessorapi.h
changeset 0 094583676ce7
equal deleted inserted replaced
-1:000000000000 0:094583676ce7
       
     1 /*
       
     2 * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: Some classes for describing imps internel data structure
       
    15 * 
       
    16 */
       
    17 
       
    18 
       
    19 #ifndef MImpsDataAccessorApi_H
       
    20 #define MImpsDataAccessorApi_H
       
    21 
       
    22 //  INCLUDES
       
    23 #include "Impsservercommon.h"
       
    24 
       
    25 // CONSTANTS
       
    26 
       
    27 enum TImpsDataType
       
    28     {
       
    29     EImpsDataTypeNone = 0,   // This is for elements not having value in DTD
       
    30     EImpsDataTypeInt = 1,
       
    31     EImpsDataTypeDesc = 2,
       
    32     EImpsDataTypeDesc8 = 3,
       
    33     EImpsDataTypeBoolean = 4,
       
    34     EImpsDataTypeNotSupported = 5,   // Data accessor does not support this
       
    35     EImpsDataTypeExt = 6,    // Data type for extension attributes
       
    36     EImpsDataTypeContentData = 7    // special data type for content data handling
       
    37     };
       
    38 
       
    39 enum TImpsKeyType
       
    40     {
       
    41     EImpsKeyTypeIM = 0,  // IM
       
    42     EImpsKeyTypePre = 1  // Presence
       
    43     };
       
    44 
       
    45 
       
    46 // CLASS DECLARATION
       
    47 class CImpsFields;
       
    48 class RFs;
       
    49 
       
    50 // MACROS
       
    51 #define GET_INDEX( aElemvalue ) ( (aElemvalue>>16 ) & 0xFFFF )
       
    52 #define GET_ENUM( aElemvalue ) ( aElemvalue& 0xFFFF )
       
    53 #define CREATEKEY( elem, index ) ( ( elem& 0xFFFF ) + ( index<< 16 ) )
       
    54 // if Upper bit is one then we have presence attribute
       
    55 #define IS_PRESENCE( aElemvalue ) ( aElemvalue>>31 )
       
    56 
       
    57 // DATA TYPES
       
    58 
       
    59 enum TImpsPresenceContent
       
    60     {
       
    61     EImpsKeyPRPresenceSubList                           = KImpsKeyPresenceSubList, // duplicate!!!
       
    62     EImpsKeyPRQualifier                      			= KImpsKeyPRQualifier,
       
    63     EImpsKeyPRPresenceValue                             = KImpsKeyPRPresenceValue,
       
    64     EImpsKeyPROnlineStatus                              = KImpsKeyPROnlineStatus,
       
    65     EImpsKeyPRRegistration                              = KImpsKeyPRRegistration,
       
    66     EImpsKeyPRFreeTextLocation                          = KImpsKeyPRFreeTextLocation,
       
    67     EImpsKeyPRPLMN                                      = KImpsKeyPRPLMN,
       
    68     EImpsKeyPRUserAvailability                          = KImpsKeyPRUserAvailability,
       
    69     EImpsKeyPRPreferredLanguage                         = KImpsKeyPRPreferredLanguage,
       
    70     EImpsKeyPRStatusText                                = KImpsKeyPRStatusText,
       
    71     EImpsKeyPRStatusMood                                = KImpsKeyPRStatusMood,
       
    72     EImpsKeyPRAlias                                     = KImpsKeyPRAlias,
       
    73     EImpsKeyPRClientInfo                                = KImpsKeyPRClientInfo,
       
    74     EImpsKeyPRClientType                                = KImpsKeyClientType,
       
    75     EImpsKeyPRDevManufacturer                           = KImpsKeyPRDevManufacturer,
       
    76     EImpsKeyPRClientProducer                            = KImpsKeyPRClientProducer,
       
    77     EImpsKeyPRModel                                     = KImpsKeyPRModel,
       
    78     EImpsKeyPRClientVersion                             = KImpsKeyPRClientVersion,
       
    79     EImpsKeyPRLanguage                                  = KImpsKeyPRLanguage,
       
    80     EImpsKeyPRTimeZone                                  = KImpsKeyPRTimeZone,
       
    81     EImpsKeyPRZone                                      = KImpsKeyPRZone,
       
    82     EImpsKeyPRGeoLocation                               = KImpsKeyPRGeoLocation,
       
    83     EImpsKeyPRLongitude                                 = KImpsKeyPRLongitude,
       
    84     EImpsKeyPRLatitude                                  = KImpsKeyPRLatitude,
       
    85     EImpsKeyPRAltitude                                  = KImpsKeyPRAltitude,
       
    86     EImpsKeyPRAccuracy                                  = KImpsKeyPRAccuracy,
       
    87     EImpsKeyPRAddress                                   = KImpsKeyPRAddress,
       
    88     EImpsKeyPRCountry                                   = KImpsKeyPRCountry,
       
    89     EImpsKeyPRCity                                      = KImpsKeyPRCity,
       
    90     EImpsKeyPRStreet                                    = KImpsKeyPRStreet,
       
    91     EImpsKeyPRCrossing1                                 = KImpsKeyPRCrossing1,
       
    92     EImpsKeyPRCrossing2                                 = KImpsKeyPRCrossing2,
       
    93     EImpsKeyPRBuilding                                  = KImpsKeyPRBuilding,
       
    94     EImpsKeyPRNamedArea                                 = KImpsKeyPRNamedArea,
       
    95     EImpsKeyPRCommCap                                   = KImpsKeyPRCommCap,
       
    96     EImpsKeyPRCommC                                     = KImpsKeyPRCommC,
       
    97     EImpsKeyPRCap                                       = KImpsKeyPRCap,
       
    98     EImpsKeyPRStatus                                    = KImpsKeyPRStatus,
       
    99     EImpsKeyPRContact                                   = KImpsKeyPRContact,
       
   100     EImpsKeyPRNote                                      = KImpsKeyPRNote,
       
   101     EImpsKeyPRPreferredContacts                         = KImpsKeyPRPreferredContacts,
       
   102     EImpsKeyPRAddrPref                                  = KImpsKeyPRAddrPref,
       
   103     EImpsKeyPRPrefC                                     = KImpsKeyPRPrefC,
       
   104     EImpsKeyPRCaddr                                     = KImpsKeyPRCaddr,
       
   105     EImpsKeyPRCstatus                                   = KImpsKeyPRCstatus,
       
   106     EImpsKeyPRCname                                     = KImpsKeyPRCname,
       
   107     EImpsKeyPRCpriority                                 = KImpsKeyPRCpriority,
       
   108     EImpsKeyPRStatusContent                             = KImpsKeyPRStatusContent,
       
   109     EImpsKeyPRDirectContent                             = KImpsKeyPRDirectContent,
       
   110     EImpsKeyPRReferredContent                           = KImpsKeyPRReferredContent,
       
   111     EImpsKeyPRContactInfo                               = KImpsKeyPRContactInfo,
       
   112     EImpsKeyPRContainedvCard                            = KImpsKeyPRContainedvCard,
       
   113     EImpsKeyPRReferredvCard                             = KImpsKeyPRReferredvCard,
       
   114     EImpsKeyPRExt                                       = KImpsKeyPRExt,
       
   115 
       
   116     // CSP 1.2
       
   117     EImpsKeyPRInf_link                                  = KImpsKeyInf_link,
       
   118     EImpsKeyPRInfoLink                                  = KImpsKeyInfoLink,
       
   119     EImpsKeyPRLink                                      = KImpsKeyLink,
       
   120     EImpsKeyPRText                                      = KImpsKeyText,
       
   121 
       
   122     EImpsKeyPREND                                       = KImpsKeyPREND
       
   123     };
       
   124 
       
   125 enum TImpsContent
       
   126     {
       
   127     EImpsKeySession                                     = KImpsKeySession,
       
   128     EImpsKeySessionDescriptor                           = KImpsKeySessionDescriptor,
       
   129     EImpsKeySessionType                                 = KImpsKeySessionType,
       
   130     EImpsKeySessionID                                   = KImpsKeySessionID,
       
   131     EImpsKeyTransaction                                 = KImpsKeyTransaction,
       
   132     EImpsKeyTransactionDescriptor                       = KImpsKeyTransactionDescriptor,
       
   133     EImpsKeyTransactionMode                             = KImpsKeyTransactionMode,
       
   134     EImpsKeyTransactionID                               = KImpsKeyTransactionID,
       
   135     EImpsKeyPoll                                        = KImpsKeyPoll,
       
   136     EImpsKeyTransactionContent                          = KImpsKeyTransactionContent,
       
   137     EImpsKeyStatus                                      = KImpsKeyStatus,
       
   138     EImpsKeyPolling_Request                             = KImpsKeyPolling_Request,
       
   139     EImpsKeyLogin_Request                               = KImpsKeyLogin_Request,
       
   140     EImpsKeyLogin_Response                              = KImpsKeyLogin_Response,
       
   141     EImpsKeyService_Request                             = KImpsKeyService_Request,
       
   142     EImpsKeyService_Response                            = KImpsKeyService_Response,
       
   143     EImpsKeyClientCapability_Request                    = KImpsKeyClientCapability_Request,
       
   144     EImpsKeyClientCapability_Response                   = KImpsKeyClientCapability_Response,
       
   145     EImpsKeyLogout_Request                              = KImpsKeyLogout_Request,
       
   146     EImpsKeyDisconnect                                  = KImpsKeyDisconnect,
       
   147     EImpsKeyKeepAlive_Request                           = KImpsKeyKeepAlive_Request,
       
   148     EImpsKeyKeepAlive_Response                          = KImpsKeyKeepAlive_Response,
       
   149     EImpsKeyGetSPInfo_Request                           = KImpsKeyGetSPInfo_Request,
       
   150     EImpsKeyGetSPInfo_Response                          = KImpsKeyGetSPInfo_Response,
       
   151     EImpsKeySearch_Request                              = KImpsKeySearch_Request,
       
   152     EImpsKeyStopSearch_Request                          = KImpsKeyStopSearch_Request,
       
   153     EImpsKeySearch_Response                             = KImpsKeySearch_Response,
       
   154     EImpsKeyCompletionFlag                              = KImpsKeyCompletionFlag,
       
   155     EImpsKeyInvite_Request                              = KImpsKeyInvite_Request,
       
   156     EImpsKeyInvite_Response                             = KImpsKeyInvite_Response,
       
   157     EImpsKeyInviteUser_Request                          = KImpsKeyInviteUser_Request,
       
   158     EImpsKeyInviteUser_Response                         = KImpsKeyInviteUser_Response,
       
   159     EImpsKeyCancelInvite_Request                        = KImpsKeyCancelInvite_Request,
       
   160     EImpsKeyCancelInviteUser_Request                    = KImpsKeyCancelInviteUser_Request,
       
   161     EImpsKeySubscribePresence_Request                   = KImpsKeySubscribePresence_Request,
       
   162     EImpsKeyUnsubscribePresence_Request                 = KImpsKeyUnsubscribePresence_Request,
       
   163     EImpsKeyPresenceNotification_Request                = KImpsKeyPresenceNotification_Request,
       
   164     EImpsKeyGetWatcherList_Request                      = KImpsKeyGetWatcherList_Request,
       
   165     EImpsKeyGetWatcherList_Response                     = KImpsKeyGetWatcherList_Response,
       
   166     EImpsKeyGetPresence_Request                         = KImpsKeyGetPresence_Request,
       
   167     EImpsKeyGetPresence_Response                        = KImpsKeyGetPresence_Response,
       
   168     EImpsKeyPresenceAuth_Request                        = KImpsKeyPresenceAuth_Request,
       
   169     EImpsKeyPresenceAuth_User                           = KImpsKeyPresenceAuth_User,
       
   170     EImpsKeyCancelAuth_Request                          = KImpsKeyCancelAuth_Request,
       
   171     EImpsKeyUpdatePresence_Request                      = KImpsKeyUpdatePresence_Request,
       
   172     EImpsKeyGetList_Request                             = KImpsKeyGetList_Request,
       
   173     EImpsKeyGetList_Response                            = KImpsKeyGetList_Response,
       
   174     EImpsKeyCreateList_Request                          = KImpsKeyCreateList_Request,
       
   175     EImpsKeyDeleteList_Request                          = KImpsKeyDeleteList_Request,
       
   176     EImpsKeyListManage_Request                          = KImpsKeyListManage_Request,
       
   177     EImpsKeyListManage_Response                         = KImpsKeyListManage_Response,
       
   178     EImpsKeyCreateAttributeList_Request                 = KImpsKeyCreateAttributeList_Request,
       
   179     EImpsKeyDeleteAttributeList_Request                 = KImpsKeyDeleteAttributeList_Request,
       
   180     EImpsKeyGetAttributeList_Request                    = KImpsKeyGetAttributeList_Request,
       
   181     EImpsKeyGetAttributeList_Response                   = KImpsKeyGetAttributeList_Response,
       
   182     EImpsKeySendMessage_Request                         = KImpsKeySendMessage_Request,
       
   183     EImpsKeySendMessage_Response                        = KImpsKeySendMessage_Response,
       
   184     EImpsKeySetDeliveryMethod_Request                   = KImpsKeySetDeliveryMethod_Request,
       
   185     EImpsKeyGetMessageList_Request                      = KImpsKeyGetMessageList_Request,
       
   186     EImpsKeyGetMessageList_Response                     = KImpsKeyGetMessageList_Response,
       
   187     EImpsKeyRejectMessage_Request                       = KImpsKeyRejectMessage_Request,
       
   188     EImpsKeyMessageNotification                         = KImpsKeyMessageNotification,
       
   189     EImpsKeyGetMessage_Request                          = KImpsKeyGetMessage_Request,
       
   190     EImpsKeyGetMessage_Response                         = KImpsKeyGetMessage_Response,
       
   191     EImpsKeyNewMessage                                  = KImpsKeyNewMessage,
       
   192     EImpsKeyMessageDelivered                            = KImpsKeyMessageDelivered,
       
   193     EImpsKeyDeliveryReport_Request                      = KImpsKeyDeliveryReport_Request,
       
   194     EImpsKeyDeliveryTime                                = KImpsKeyDeliveryTime,
       
   195     EImpsKeyForwardMessage_Request                      = KImpsKeyForwardMessage_Request,
       
   196     EImpsKeyGetBlockedList_Request                      = KImpsKeyGetBlockedList_Request,
       
   197     EImpsKeyGetBlockedList_Response                     = KImpsKeyGetBlockedList_Response,
       
   198     EImpsKeyBlockEntity_Request                         = KImpsKeyBlockEntity_Request,
       
   199     EImpsKeyCreateGroup_Request                         = KImpsKeyCreateGroup_Request,
       
   200     EImpsKeyDeleteGroup_Request                         = KImpsKeyDeleteGroup_Request,
       
   201     EImpsKeyJoinGroup_Request                           = KImpsKeyJoinGroup_Request,
       
   202     EImpsKeyJoinGroup                                   = KImpsKeyJoinGroup,
       
   203     EImpsKeySubscribeNotification                       = KImpsKeySubscribeNotification,
       
   204     EImpsKeyJoinGroup_Response                          = KImpsKeyJoinGroup_Response,
       
   205     EImpsKeyLeaveGroup_Request                          = KImpsKeyLeaveGroup_Request,
       
   206     EImpsKeyLeaveGroup_Response                         = KImpsKeyLeaveGroup_Response,
       
   207     EImpsKeyGetGroupMembers_Request                     = KImpsKeyGetGroupMembers_Request,
       
   208     EImpsKeyGetGroupMembers_Response                    = KImpsKeyGetGroupMembers_Response,
       
   209     EImpsKeyAddGroupMembers_Request                     = KImpsKeyAddGroupMembers_Request,
       
   210     EImpsKeyRemoveGroupMembers_Request                  = KImpsKeyRemoveGroupMembers_Request,
       
   211     EImpsKeyMemberAccess_Request                        = KImpsKeyMemberAccess_Request,
       
   212     EImpsKeyGetGroupProps_Request                       = KImpsKeyGetGroupProps_Request,
       
   213     EImpsKeyGetGroupProps_Response                      = KImpsKeyGetGroupProps_Response,
       
   214     EImpsKeySetGroupProps_Request                       = KImpsKeySetGroupProps_Request,
       
   215     EImpsKeyRejectList_Request                          = KImpsKeyRejectList_Request,
       
   216     EImpsKeyRejectList_Response                         = KImpsKeyRejectList_Response,
       
   217     EImpsKeySubscribeGroupNotice_Request                = KImpsKeySubscribeGroupNotice_Request,
       
   218     EImpsKeySubscribeGroupNotice_Response               = KImpsKeySubscribeGroupNotice_Response,
       
   219     EImpsKeyGroupChangeNotice                           = KImpsKeyGroupChangeNotice,
       
   220     EImpsKeyDigestBytes                                 = KImpsKeyDigestBytes,
       
   221     EImpsKeyDigestSchema                                = KImpsKeyDigestSchema,
       
   222     EImpsKeyPassword                                    = KImpsKeyPassword,
       
   223     EImpsKeyNonce                                       = KImpsKeyNonce,
       
   224     EImpsKeyCapabilityRequest                           = KImpsKeyCapabilityRequest,
       
   225     EImpsKeyCapabilityList                              = KImpsKeyCapabilityList,
       
   226     EImpsKeyClientType                                  = KImpsKeyClientType,
       
   227     EImpsKeyInitialDeliveryMethod                       = KImpsKeyInitialDeliveryMethod,
       
   228     EImpsKeyAnyContent                                  = KImpsKeyAnyContent,
       
   229     EImpsKeyAcceptedCharSet                             = KImpsKeyAcceptedCharSet,
       
   230     EImpsKeyAcceptedContentType                         = KImpsKeyAcceptedContentType,
       
   231     EImpsKeyAcceptedTransferEncoding                    = KImpsKeyAcceptedTransferEncoding,
       
   232     EImpsKeyAcceptedContentLength                       = KImpsKeyAcceptedContentLength,
       
   233     EImpsKeySupportedBearer                             = KImpsKeySupportedBearer,
       
   234     EImpsKeyMultiTrans                                  = KImpsKeyMultiTrans,
       
   235     EImpsKeyParserSize                                  = KImpsKeyParserSize,
       
   236     EImpsKeySupportedCIRMethod                          = KImpsKeySupportedCIRMethod,
       
   237     EImpsKeyUDPPort                                     = KImpsKeyUDPPort,
       
   238     EImpsKeyTCPAddress                                  = KImpsKeyTCPAddress,
       
   239     EImpsKeyTCPPort                                     = KImpsKeyTCPPort,
       
   240     EImpsKeyServerPollMin                               = KImpsKeyServerPollMin,
       
   241     EImpsKeyDefaultLanguage                             = KImpsKeyDefaultLanguage,
       
   242     EImpsKeyResult                                      = KImpsKeyResult,
       
   243     EImpsKeyCode                                        = KImpsKeyCode,
       
   244     EImpsKeyDescription                                 = KImpsKeyDescription,
       
   245     EImpsKeyDetailedResult                              = KImpsKeyDetailedResult,
       
   246     EImpsKeySessionCookie                               = KImpsKeySessionCookie,
       
   247     EImpsKeySender                                      = KImpsKeySender,
       
   248     EImpsKeyRecipient                                   = KImpsKeyRecipient,
       
   249     EImpsKeyUser                                        = KImpsKeyUser,
       
   250     EImpsKeyGroup                                       = KImpsKeyGroup,
       
   251     EImpsKeyUserID                                      = KImpsKeyUserID,
       
   252     EImpsKeyClientID                                    = KImpsKeyClientID,
       
   253     EImpsKeyGroupID                                     = KImpsKeyGroupID,
       
   254     EImpsKeyMessageID                                   = KImpsKeyMessageID,
       
   255     EImpsKeyMessageURI                                  = KImpsKeyMessageURI,
       
   256     EImpsKeyScreenName                                  = KImpsKeyScreenName,
       
   257     EImpsKeyNickName                                    = KImpsKeyNickName,
       
   258     EImpsKeyURLList                                     = KImpsKeyURLList,
       
   259     EImpsKeyURL                                         = KImpsKeyURL,
       
   260     EImpsKeyMSISDN                                      = KImpsKeyMSISDN,
       
   261     EImpsKeyGroupList                                   = KImpsKeyGroupList,
       
   262     EImpsKeyUserList                                    = KImpsKeyUserList,
       
   263     EImpsKeyContactList                                 = KImpsKeyContactList,
       
   264     EImpsKeyDefaultContactList                          = KImpsKeyDefaultContactList,
       
   265     EImpsKeyNickList                                    = KImpsKeyNickList,
       
   266     EImpsKeyAddNickList                                 = KImpsKeyAddNickList,
       
   267     EImpsKeyRemoveNickList                              = KImpsKeyRemoveNickList,
       
   268     EImpsKeyDefaultList                                 = KImpsKeyDefaultList,
       
   269     EImpsKeySearchPairList                              = KImpsKeySearchPairList,
       
   270     EImpsKeySearchElement                               = KImpsKeySearchElement,
       
   271     EImpsKeySearchString                                = KImpsKeySearchString,
       
   272     EImpsKeySearchLimit                                 = KImpsKeySearchLimit,
       
   273     EImpsKeySearchID                                    = KImpsKeySearchID,
       
   274     EImpsKeySearchIndex                                 = KImpsKeySearchIndex,
       
   275     EImpsKeySearchFindings                              = KImpsKeySearchFindings,
       
   276     EImpsKeySearchResult                                = KImpsKeySearchResult,
       
   277     EImpsKeyInviteID                                    = KImpsKeyInviteID,
       
   278     EImpsKeyInviteType                                  = KImpsKeyInviteType,
       
   279     EImpsKeyInviteNote                                  = KImpsKeyInviteNote,
       
   280     EImpsKeyAcceptance                                  = KImpsKeyAcceptance,
       
   281     EImpsKeyResponseNote                                = KImpsKeyResponseNote,
       
   282     EImpsKeyDefaultAttributeList                        = KImpsKeyDefaultAttributeList,
       
   283     EImpsKeyPresence                                    = KImpsKeyPresence,
       
   284     EImpsKeyPresenceSubList                             = KImpsKeyPresenceSubList,
       
   285     EImpsKeyKeepAliveTime                               = KImpsKeyKeepAliveTime,
       
   286     EImpsKeyTimeToLive                                  = KImpsKeyTimeToLive,
       
   287     EImpsKeySName                                       = KImpsKeySName,
       
   288     EImpsKeyName                                        = KImpsKeyName,
       
   289     EImpsKeyValue                                       = KImpsKeyValue,
       
   290     EImpsKeyValidity                                    = KImpsKeyValidity,
       
   291     EImpsKeyMessageInfo                                 = KImpsKeyMessageInfo,
       
   292     EImpsKeyDateTime                                    = KImpsKeyDateTime,
       
   293     EImpsKeyMessageCount                                = KImpsKeyMessageCount,
       
   294     EImpsKeyDeliveryReport                              = KImpsKeyDeliveryReport,
       
   295     EImpsKeyDeliveryMethod                              = KImpsKeyDeliveryMethod,
       
   296     EImpsKeyBlockList                                   = KImpsKeyBlockList,
       
   297     EImpsKeyGrantList                                   = KImpsKeyGrantList,
       
   298     EImpsKeyEntityList                                  = KImpsKeyEntityList,
       
   299     EImpsKeyAddList                                     = KImpsKeyAddList,
       
   300     EImpsKeyRemoveList                                  = KImpsKeyRemoveList,
       
   301     EImpsKeyInUse                                       = KImpsKeyInUse,
       
   302     EImpsKeyContactListProperties                       = KImpsKeyContactListProperties,
       
   303     EImpsKeyGroupProperties                             = KImpsKeyGroupProperties,
       
   304     EImpsKeyOwnProperties                               = KImpsKeyOwnProperties,
       
   305     EImpsKeyProperty                                    = KImpsKeyProperty,
       
   306     EImpsKeyWelcomeNote                                 = KImpsKeyWelcomeNote,
       
   307     EImpsKeyJoinedRequest                               = KImpsKeyJoinedRequest,
       
   308     EImpsKeyAdmin                                       = KImpsKeyAdmin,
       
   309     EImpsKeyMod                                         = KImpsKeyMod,
       
   310     EImpsKeyUsers                                       = KImpsKeyUsers,
       
   311     EImpsKeySubscribeType                               = KImpsKeySubscribeType,
       
   312     EImpsKeyJoined                                      = KImpsKeyJoined,
       
   313     EImpsKeyLeft                                        = KImpsKeyLeft,
       
   314     EImpsKeyLogo                                        = KImpsKeyLogo,
       
   315     EImpsKeyContentType                                 = KImpsKeyContentType,
       
   316     EImpsKeyContentData                                 = KImpsKeyContentData,
       
   317     EImpsKeyContentSize                                 = KImpsKeyContentSize,
       
   318     EImpsKeyContentEncoding                             = KImpsKeyContentEncoding,
       
   319     EImpsKeyAllFunctionsRequest                         = KImpsKeyAllFunctionsRequest,
       
   320     EImpsKeyAllFunctions                                = KImpsKeyAllFunctions,
       
   321     EImpsKeyFunctions                                   = KImpsKeyFunctions,
       
   322     EImpsKeyWVCSPFeat                                   = KImpsKeyWVCSPFeat,
       
   323     EImpsKeyFundamentalFeat                             = KImpsKeyFundamentalFeat,
       
   324     EImpsKeyPresenceFeat                                = KImpsKeyPresenceFeat,
       
   325     EImpsKeyIMFeat                                      = KImpsKeyIMFeat,
       
   326     EImpsKeyGroupFeat                                   = KImpsKeyGroupFeat,
       
   327     EImpsKeyServiceFunc                                 = KImpsKeyServiceFunc,
       
   328     EImpsKeySearchFunc                                  = KImpsKeySearchFunc,
       
   329     EImpsKeyInviteFunc                                  = KImpsKeyInviteFunc,
       
   330     EImpsKeyContListFunc                                = KImpsKeyContListFunc,
       
   331     EImpsKeyPresenceAuthFunc                            = KImpsKeyPresenceAuthFunc,
       
   332     EImpsKeyPresenceDeliverFunc                         = KImpsKeyPresenceDeliverFunc,
       
   333     EImpsKeyAttListFunc                                 = KImpsKeyAttListFunc,
       
   334     EImpsKeyIMSendFunc                                  = KImpsKeyIMSendFunc,
       
   335     EImpsKeyIMReceiveFunc                               = KImpsKeyIMReceiveFunc,
       
   336     EImpsKeyIMAuthFunc                                  = KImpsKeyIMAuthFunc,
       
   337     EImpsKeyGroupMgmtFunc                               = KImpsKeyGroupMgmtFunc,
       
   338     EImpsKeyGroupUseFunc                                = KImpsKeyGroupUseFunc,
       
   339     EImpsKeyGroupAuthFunc                               = KImpsKeyGroupAuthFunc,
       
   340     EImpsKeyGETSPI                                      = KImpsKeyGETSPI,
       
   341     EImpsKeySRCH                                        = KImpsKeySRCH,
       
   342     EImpsKeySTSRC                                       = KImpsKeySTSRC,
       
   343     EImpsKeyINVIT                                       = KImpsKeyINVIT,
       
   344     EImpsKeyCAINV                                       = KImpsKeyCAINV,
       
   345     EImpsKeyGCLI                                        = KImpsKeyGCLI,
       
   346     EImpsKeyCCLI                                        = KImpsKeyCCLI,
       
   347     EImpsKeyDCLI                                        = KImpsKeyDCLI,
       
   348     EImpsKeyMCLS                                        = KImpsKeyMCLS,
       
   349     EImpsKeyGETWL                                       = KImpsKeyGETWL,
       
   350     EImpsKeyREACT                                       = KImpsKeyREACT,
       
   351     EImpsKeyCAAUT                                       = KImpsKeyCAAUT,
       
   352     EImpsKeyGETPR                                       = KImpsKeyGETPR,
       
   353     EImpsKeyUPDPR                                       = KImpsKeyUPDPR,
       
   354     EImpsKeyCALI                                        = KImpsKeyCALI,
       
   355     EImpsKeyDALI                                        = KImpsKeyDALI,
       
   356     EImpsKeyGALS                                        = KImpsKeyGALS,
       
   357     EImpsKeyMDELIV                                      = KImpsKeyMDELIV,
       
   358     EImpsKeyFWMSG                                       = KImpsKeyFWMSG,
       
   359     EImpsKeySETD                                        = KImpsKeySETD,
       
   360     EImpsKeyGETLM                                       = KImpsKeyGETLM,
       
   361     EImpsKeyGETM                                        = KImpsKeyGETM,
       
   362     EImpsKeyREJCM                                       = KImpsKeyREJCM,
       
   363     EImpsKeyNOTIF                                       = KImpsKeyNOTIF,
       
   364     EImpsKeyNEWM                                        = KImpsKeyNEWM,
       
   365     EImpsKeyGLBLU                                       = KImpsKeyGLBLU,
       
   366     EImpsKeyBLENT                                       = KImpsKeyBLENT,
       
   367     EImpsKeyCREAG                                       = KImpsKeyCREAG,
       
   368     EImpsKeyDELGR                                       = KImpsKeyDELGR,
       
   369     EImpsKeyGETGP                                       = KImpsKeyGETGP,
       
   370     EImpsKeySETGP                                       = KImpsKeySETGP,
       
   371     EImpsKeySUBGCN                                      = KImpsKeySUBGCN,
       
   372     EImpsKeyGRCHN                                       = KImpsKeyGRCHN,
       
   373     EImpsKeyGETGM                                       = KImpsKeyGETGM,
       
   374     EImpsKeyADDGM                                       = KImpsKeyADDGM,
       
   375     EImpsKeyRMVGM                                       = KImpsKeyRMVGM,
       
   376     EImpsKeyMBRAC                                       = KImpsKeyMBRAC,
       
   377     EImpsKeyREJEC                                       = KImpsKeyREJEC,
       
   378     EImpsKeyPureData                                    = KImpsKeyPureData,
       
   379     // CSP 1.2 additions
       
   380     EImpsKeyExtBlock                                    = KImpsKeyExtBlock,
       
   381     EImpsKeyAPIClient                                   = KImpsKeyAPIClient,
       
   382     EImpsKeyAgreedCapabilityList                        = KImpsKeyAgreedCapabilityList,
       
   383     EImpsKeyExtended_Request                            = KImpsKeyExtended_Request,
       
   384     EImpsKeyExtended_Response                           = KImpsKeyExtended_Response,
       
   385     EImpsKeyExtendedData                                = KImpsKeyExtendedData,
       
   386     EImpsKeyOtherServer                                 = KImpsKeyOtherServer,
       
   387     EImpsKeyPresenceAttributeNSName                     = KImpsKeyPresenceAttributeNSName,
       
   388     EImpsKeyReceiveList                                 = KImpsKeyReceiveList,
       
   389     EImpsKeySessionNSName                               = KImpsKeySessionNSName,
       
   390     EImpsKeyTransactionNSName                           = KImpsKeyTransactionNSName,
       
   391     EImpsKeyVerifyID_Request                            = KImpsKeyVerifyID_Request,
       
   392     EImpsKeyMF                                          = KImpsKeyMF,
       
   393     EImpsKeyMG                                          = KImpsKeyMG,
       
   394     EImpsKeyMM                                          = KImpsKeyMM,
       
   395     EImpsKeyAuto_Subscribe                              = KImpsKeyAuto_Subscribe,
       
   396     EImpsKeyGetReactiveAuthStatus_Request               = KImpsKeyGetReactiveAuthStatus_Request,
       
   397     EImpsKeyGetReactiveAuthStatus_Response              = KImpsKeyGetReactiveAuthStatus_Response,
       
   398     EImpsKeyAdminMapList                                = KImpsKeyAdminMapList,
       
   399     EImpsKeyAdminMapping                                = KImpsKeyAdminMapping,
       
   400     EImpsKeyGetJoinedUsers_Request                      = KImpsKeyGetJoinedUsers_Request,
       
   401     EImpsKeyGetJoinedUsers_Respone                      = KImpsKeyGetJoinedUsers_Respone,
       
   402     EImpsKeyMapping                                     = KImpsKeyMapping,
       
   403     EImpsKeyUserMapList                                 = KImpsKeyUserMapList,
       
   404     EImpsKeyUserMapping                                 = KImpsKeyUserMapping,
       
   405     EImpsKeyGETAUT                                      = KImpsKeyGETAUT,
       
   406     EImpsKeyGETJU                                       = KImpsKeyGETJU,
       
   407     EImpsKeyMP                                          = KImpsKeyMP,
       
   408     EImpsKeyVRID                                        = KImpsKeyVRID,
       
   409     EImpsKeyVerifyIDFunc                                = KImpsKeyVerifyIDFunc,
       
   410     EImpsKeyCIR                                         = KImpsKeyCIR,
       
   411     EImpsKeyDomain                                      = KImpsKeyDomain,
       
   412     EImpsKeyHistoryPeriod                               = KImpsKeyHistoryPeriod,
       
   413     EImpsKeyIDList                                      = KImpsKeyIDList,
       
   414     EImpsKeyMaxWatcherList                              = KImpsKeyMaxWatcherList,
       
   415     EImpsKeyReactiveAuthState                           = KImpsKeyReactiveAuthState,
       
   416     EImpsKeyReactiveAuthStatus                          = KImpsKeyReactiveAuthStatus,
       
   417     EImpsKeyReactiveAuthStatusList                      = KImpsKeyReactiveAuthStatusList,
       
   418     EImpsKeyWatcher                                     = KImpsKeyWatcher,
       
   419     EImpsKeyWatcherStatus                               = KImpsKeyWatcherStatus,
       
   420     EImpsKeyVersionList                                 = KImpsKeyVersionList,
       
   421     EImpsKeyEND                                         = KImpsKeyEND
       
   422     };
       
   423 
       
   424 // CLASS DECLARATION
       
   425 
       
   426 /**
       
   427 *  MImpsKey class
       
   428 *  Pure virtual key class
       
   429 */
       
   430 class MImpsKey
       
   431     {
       
   432     public:  // Constructors and destructor
       
   433 
       
   434         /**
       
   435         * Destructor
       
   436         */
       
   437         virtual void Destroy() = 0;
       
   438 
       
   439     public: // New functions
       
   440 
       
   441         /**
       
   442         * Add new elem to the key
       
   443         * @param aElemvalue Element value
       
   444         * @param aKeyType  Key type
       
   445         * @return void
       
   446         */
       
   447         virtual void AddL( const TInt aElemvalue ,
       
   448                            enum TImpsKeyType aKeyType  = EImpsKeyTypeIM ) = 0;
       
   449 
       
   450         /**
       
   451         * Count the elements in the key
       
   452         * @return TInt Number of elements in key
       
   453         */
       
   454         virtual TInt Count( ) const = 0;
       
   455 
       
   456         /**
       
   457         * Pop the last element from the key
       
   458         * @param how many items to pop. default is 1
       
   459         * If too much is tried the the function leaves
       
   460         * @return void
       
   461         */
       
   462         virtual void PopL( TInt aCount = 1 ) = 0;
       
   463 
       
   464         /**
       
   465         * Get the requested element from the key
       
   466         * @return TInt
       
   467         */
       
   468         virtual TInt GetElementL( const TInt aIndex,
       
   469                                   TImpsKeyType& aKeyType ) const = 0;
       
   470 
       
   471         /**
       
   472         * Replaces the last element in the key
       
   473         * @return void
       
   474         */
       
   475         virtual void ReplaceLastL( const TInt aElemvalue,
       
   476                                    enum TImpsKeyType = EImpsKeyTypeIM ) = 0;
       
   477 
       
   478         /**
       
   479         * Resets the key
       
   480         * @return void
       
   481         */
       
   482         virtual void Reset() = 0;
       
   483 
       
   484         /**
       
   485         * Equal operator
       
   486         * @param aKey to compare with
       
   487         * @return 1 = true, 0 is false
       
   488         */
       
   489         virtual TInt Compare( MImpsKey &aKey ) = 0;
       
   490     };
       
   491 
       
   492 
       
   493 /**
       
   494 *  If restore functions return EFalse then the output parameter is undefined
       
   495 */
       
   496 class MImpsDataAccessor
       
   497     {
       
   498     public:
       
   499         /**
       
   500         * Accessor creates an instance of MImpsKey entity.
       
   501         * It is NOT deleted by Accessor! You must do that yourself.
       
   502         * @return MImpsKey new key
       
   503         */
       
   504         virtual MImpsKey* NewKeyL() = 0;
       
   505 
       
   506         /**
       
   507         * descriptor value mutator
       
   508         * key is a byte sequence, which defines how value is stored
       
   509         * @param aKey Key
       
   510         * @param aValue Value
       
   511         */
       
   512         virtual void StoreDescL( MImpsKey* aKey, TPtrC aValue ) = 0;
       
   513 
       
   514         /**
       
   515         * descriptor value mutator
       
   516         * key is a byte sequence, which defines how value is stored
       
   517         * @param aKey Key
       
   518         * @param aValue Value
       
   519         */
       
   520         virtual void StoreDesc8L( MImpsKey* aKey, TPtrC8 aValue ) = 0;
       
   521 
       
   522         /**
       
   523         * integer value mutator
       
   524         * key is a byte sequence, which defines how value is stored
       
   525         * @param aKey Key
       
   526         * @param aValue Value
       
   527         */
       
   528         virtual void StoreIntegerL( MImpsKey* aKey, TInt aValue ) = 0;
       
   529 
       
   530         /**
       
   531         * boolean value mutator
       
   532         * key is a byte sequence, which defines how value is stored
       
   533         * @param aKey Key
       
   534         * @param aValue Value
       
   535         */
       
   536         virtual void StoreBooleanL( MImpsKey* aKey, TBool aValue ) = 0;
       
   537 
       
   538         /**
       
   539         * store empty value
       
   540         * key is a byte sequence, which defines how value is stored
       
   541         * @param aKey Key
       
   542         */
       
   543         virtual void StoreEmptyL( MImpsKey* aKey ) = 0;
       
   544 
       
   545         /**
       
   546         * extension attribute mutator
       
   547         * key is a byte sequence, which defines how value is stored
       
   548         * @param aKey Key
       
   549         * @param aName Extension attribute name
       
   550         * @param aValue Extension attribute value
       
   551         */
       
   552         virtual void StoreExtL( MImpsKey* aKey,
       
   553                                 TPtrC8 aName, TPtrC8 aValue ) = 0;
       
   554 
       
   555         /**
       
   556         * descriptor value accessor
       
   557         * Function return EFalse if key is not found
       
   558         * Function return ETrue if key is found
       
   559         * @param aKey Key for restore
       
   560         * @param aDes OUT Pointer to TDesC object.
       
   561         */
       
   562         virtual TBool RestoreDescL( MImpsKey* aKey, TDesC*& aDes ) = 0;
       
   563 
       
   564         /**
       
   565         * descriptor value accessor
       
   566         * Function return EFalse if key is not found
       
   567         * Function return ETrue if key is found
       
   568         * @param aKey Key for restore
       
   569         * @param aBuf OUT Pointer to TDesC8 object
       
   570         */
       
   571         virtual TBool RestoreDesc8L( MImpsKey* aKey,  TDesC8*& aDes ) = 0;
       
   572 
       
   573         /**
       
   574         * integer value accessor
       
   575         * Function return EFalse if key is not found
       
   576         * Function return ETrue if key is found
       
   577         * @param aKey Key for restore
       
   578         * @param aBuf OUT TInt object
       
   579         */
       
   580         virtual TBool RestoreIntegerL( MImpsKey* aKey, TInt& aInt ) = 0;
       
   581 
       
   582         /**
       
   583         * Boolean value accessor
       
   584         * Function return EFalse if key is not found
       
   585         * Function return ETrue if key is found
       
   586         * @param aKey Key for restore
       
   587         * @param aBuf OUT Boolean object
       
   588         */
       
   589         virtual TBool RestoreBooleanL( MImpsKey* aKey, TBool& aBool ) = 0;
       
   590 
       
   591         /**
       
   592         * empty value accessor
       
   593         * Function return EFalse if key is not found
       
   594         * Function return ETrue if key is found
       
   595         * @param aKey Key for restore
       
   596         */
       
   597         virtual TBool RestoreEmptyL( MImpsKey* aKey ) = 0;
       
   598 
       
   599         /**
       
   600         * extension attribute accessor
       
   601         * Function return EFalse if key is not found
       
   602         * Function return ETrue if key is found
       
   603         * @param aKey Key for restore
       
   604         * @param aName OUT Pointer to TDesC8 object
       
   605         * @param aValue OUT Pointer to TDesC8 object
       
   606         */
       
   607         virtual TBool RestoreExtL( MImpsKey* aKey,
       
   608                                    TDesC8*& aName, TDesC8*& aValue ) = 0;
       
   609 
       
   610         /**
       
   611         * data type accessor
       
   612         * Leaves with KErrArgument if illegal key not in WV DTD.
       
   613         * return data type. Note that one possible value is "not supported".
       
   614         * @param aKey Key type
       
   615         * @return TImpsDataType Datatype
       
   616         */
       
   617         virtual TImpsDataType KeyTypeL( MImpsKey* aKey ) = 0;
       
   618 
       
   619         /**
       
   620         * Finds the alternative key
       
   621         * This function finds if the supplied key has a child in the
       
   622         * datastorage and returns the information of the element.
       
   623         * This is usefull with e.g. TransactionContent
       
   624         * @param aKey key in
       
   625         * @param aEnum Enum value out
       
   626         * @param aIndex index out
       
   627         * @param aType type out
       
   628         * @return ETrue if found, EFalse if not found
       
   629         */
       
   630         virtual TBool RestoreAlternativeL( const MImpsKey* aKey,
       
   631                                            TInt& aEnum,
       
   632                                            TInt& aIndex,
       
   633                                            TImpsKeyType& aType ) const = 0;
       
   634 
       
   635         /**
       
   636         * Checks if the key exists
       
   637         * This function finds if the supplied key exists as it self or with
       
   638         * children and returns ETrue or EFalse
       
   639         * @param aKey key in
       
   640         * @return ETrue if found, EFalse if not found
       
   641         */
       
   642         virtual TBool CheckBranchExistenceL( const MImpsKey* aKey ) const = 0;
       
   643 
       
   644         /**
       
   645         * Copy specific part of the message to the current message
       
   646         * @param aSource where to copy data elements
       
   647         * @param aKey which part of message is copied. NULL means that all data
       
   648         *        is copied.
       
   649         */
       
   650         virtual void CopyDataL(
       
   651             MImpsDataAccessor& aSource,
       
   652             MImpsKey* aKey = NULL ) = 0;
       
   653 
       
   654         /**
       
   655         * Get CImpsFields
       
   656         * @return CImpsFields*
       
   657         */
       
   658         virtual CImpsFields* GetImpsFields( ) const = 0;
       
   659 
       
   660 #ifdef _DEBUG
       
   661         virtual void DumpToFileL( RFs& aFs, const TDesC& aFilename ) = 0;
       
   662 #endif
       
   663     };
       
   664 
       
   665 
       
   666 
       
   667 #endif      // MImpsDataAccessorApi_H
       
   668 
       
   669 // End of File