webservices/wsframework/src/sencontext.cpp
changeset 0 62f9d29f7211
equal deleted inserted replaced
-1:000000000000 0:62f9d29f7211
       
     1 /*
       
     2 * Copyright (c) 2002-2006 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:        
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 
       
    22 
       
    23 
       
    24 
       
    25 // INCLUDE FILES
       
    26 #include "sencontext.h" 
       
    27 #include "sencontextitem.h"
       
    28 #include "SenElement.h"
       
    29 #include "SenXmlReader.h"
       
    30 
       
    31 //#include "SenPointerMap.h" // internal: Utils\inc
       
    32 
       
    33 EXPORT_C CSenContext* CSenContext::NewL(SenContext::TContextDirection aDirection)
       
    34     {
       
    35     CSenContext* pNew = CSenContext::NewLC(aDirection);
       
    36     CleanupStack::Pop();
       
    37     return pNew;
       
    38     }
       
    39 
       
    40 EXPORT_C CSenContext* CSenContext::NewLC(SenContext::TContextDirection aDirection)
       
    41     {
       
    42     CSenContext* pNew = new (ELeave) CSenContext(aDirection);
       
    43     CleanupStack::PushL(pNew);
       
    44     pNew->BaseConstructL();
       
    45     return pNew;
       
    46     }
       
    47 
       
    48 EXPORT_C CSenContext::CSenContext(SenContext::TContextDirection aDirection)
       
    49 :  iItems( EFalse, ETrue ),
       
    50    iDirection( aDirection )
       
    51     {
       
    52     }
       
    53 
       
    54 EXPORT_C CSenContext::~CSenContext()
       
    55     {
       
    56     iItems.Reset();
       
    57     }
       
    58        
       
    59 EXPORT_C void CSenContext::BaseConstructL()
       
    60     {
       
    61     }
       
    62 
       
    63 // From MSenContext:
       
    64 SenContext::TContextType CSenContext::Type() const
       
    65     {
       
    66     return SenContext::EContextBase;
       
    67     }
       
    68        
       
    69 SenContext::TContextDirection CSenContext::Direction() const
       
    70     {
       
    71     return iDirection;
       
    72     }
       
    73        
       
    74 TInt CSenContext::Add(const TDesC8& aKey, const TDesC8& aValue)
       
    75     {
       
    76     if( iItems.Count() > 0 && iItems.Find(aKey) != KErrNotFound )
       
    77         {
       
    78         return KErrAlreadyExists;
       
    79         }
       
    80 
       
    81     CSenContextItem* pItem = NULL;
       
    82     TInt leaveCode(KErrNone);
       
    83     TRAP( leaveCode, pItem = CSenContextItem::NewL(aValue); )
       
    84     if( leaveCode != KErrNone ) 
       
    85         {
       
    86         return leaveCode;
       
    87         }
       
    88 
       
    89     TInt retCode(iItems.Append(&aKey, pItem));
       
    90     if( retCode != KErrNone )
       
    91         {
       
    92         delete pItem;
       
    93         }
       
    94     return retCode;
       
    95     }
       
    96        
       
    97 TInt CSenContext::Update(const TDesC8& aKey, const TDesC8& aValue)
       
    98     {
       
    99     TInt leaveCode(KErrNone);
       
   100     CSenContextItem* pItem = NULL;
       
   101     TRAP( leaveCode, pItem = CSenContextItem::NewL(aValue); )
       
   102     if( leaveCode != KErrNone ) 
       
   103         {
       
   104         return leaveCode;
       
   105         }
       
   106 
       
   107     TInt retCode(iItems.UpdateValue(&aKey, pItem));
       
   108     if( retCode != KErrNone )
       
   109         {
       
   110         delete pItem;
       
   111         }
       
   112     return retCode;
       
   113     }
       
   114        
       
   115 const TDesC8* CSenContext::GetDesC8L(const TDesC8& aKey)
       
   116     {
       
   117     TInt index = iItems.Find(aKey);
       
   118     if ( index != KErrNotFound )
       
   119         {
       
   120         const CSenContextItem* pItem = iItems.ValueAt(index);
       
   121         if( pItem )
       
   122             {
       
   123             return pItem->ToDesC8L();
       
   124             }
       
   125         }
       
   126     return NULL;
       
   127     }
       
   128        
       
   129 TInt CSenContext::Add(const TDesC8& aKey, TInt aValue)
       
   130     {
       
   131     if( iItems.Count() > 0 && iItems.Find(aKey) != KErrNotFound )
       
   132         {
       
   133         return KErrAlreadyExists;
       
   134         }
       
   135 
       
   136     TInt leaveCode(KErrNone);
       
   137     CSenContextItem* pItem = NULL;
       
   138     TRAP( leaveCode, pItem = CSenContextItem::NewL(aValue); )
       
   139     if( leaveCode != KErrNone ) 
       
   140         {
       
   141         return leaveCode;
       
   142         }
       
   143 
       
   144     TInt retCode(iItems.Append(&aKey, pItem));
       
   145     if( retCode != KErrNone )
       
   146         {
       
   147         delete pItem;
       
   148         }
       
   149     return retCode;
       
   150     }
       
   151        
       
   152 TInt CSenContext::Update(const TDesC8& aKey, TInt aValue)
       
   153     {
       
   154     TInt leaveCode(KErrNone);
       
   155     CSenContextItem* pItem = NULL;
       
   156     TRAP( leaveCode, pItem = CSenContextItem::NewL(aValue); )
       
   157     if( leaveCode != KErrNone ) 
       
   158         {
       
   159         return leaveCode;
       
   160         }
       
   161 
       
   162     TInt retCode(iItems.UpdateValue(&aKey, pItem));
       
   163     if( retCode != KErrNone )
       
   164         {
       
   165         delete pItem;
       
   166         }
       
   167     return retCode;
       
   168     }
       
   169        
       
   170 const TInt* CSenContext::GetIntL(const TDesC8& aKey)
       
   171     {
       
   172     TInt index = iItems.Find(aKey);
       
   173     if ( index != KErrNotFound )
       
   174         {
       
   175         const CSenContextItem* pItem = iItems.ValueAt(index);
       
   176         if(pItem)
       
   177             {
       
   178             return pItem->ToIntL();
       
   179             }
       
   180         }
       
   181     return NULL;
       
   182     }
       
   183        
       
   184 TInt CSenContext::Add(const TDesC8& aKey, CSenElement* aValue)
       
   185     {
       
   186     if( iItems.Count() > 0 && iItems.Find(aKey) != KErrNotFound )
       
   187         {
       
   188         return KErrAlreadyExists;
       
   189         }
       
   190 
       
   191     TInt leaveCode(KErrNone);
       
   192     CSenContextItem* pItem = NULL;
       
   193     TRAP( leaveCode, pItem = CSenContextItem::NewL(aValue); )
       
   194     if( leaveCode != KErrNone ) 
       
   195         {
       
   196         return leaveCode;
       
   197         }
       
   198 
       
   199     TInt retCode(iItems.Append(&aKey, pItem));
       
   200     if( retCode != KErrNone )
       
   201         {
       
   202         delete pItem;
       
   203         }
       
   204     return retCode;
       
   205     }
       
   206        
       
   207 TInt CSenContext::Update(const TDesC8& aKey, CSenElement* aValue)
       
   208     {
       
   209     TInt leaveCode(KErrNone);
       
   210     CSenContextItem* pItem = NULL;
       
   211     TRAP( leaveCode, pItem = CSenContextItem::NewL(aValue); )
       
   212     if( leaveCode != KErrNone ) 
       
   213         {
       
   214         return leaveCode;
       
   215         }
       
   216         
       
   217     TInt retCode(iItems.UpdateValue(&aKey, pItem));
       
   218     if( retCode != KErrNone )
       
   219         {
       
   220         delete pItem;
       
   221         }
       
   222     return retCode;
       
   223     }
       
   224        
       
   225 const CSenElement* CSenContext::GetSenElementL(const TDesC8& aKey)
       
   226     {
       
   227     CSenElement* pElement = NULL;
       
   228     TInt index = iItems.Find(aKey);
       
   229     if ( index != KErrNotFound )
       
   230         {
       
   231         const CSenContextItem* pItem = iItems.ValueAt(index);
       
   232         pElement = &(pItem->ToSenElementL());
       
   233         }
       
   234     return pElement;
       
   235     }
       
   236        
       
   237 TInt CSenContext::Add(const TDesC8& aKey, TAny* aValue)
       
   238     {
       
   239     if( iItems.Count() > 0 && iItems.Find(aKey) != KErrNotFound )
       
   240         {
       
   241         return KErrAlreadyExists;
       
   242         }
       
   243 
       
   244     TInt leaveCode(KErrNone);
       
   245     CSenContextItem* pItem = NULL;
       
   246     TRAP( leaveCode, pItem = CSenContextItem::NewL(aValue); )
       
   247     if( leaveCode != KErrNone ) 
       
   248         {
       
   249         return leaveCode;
       
   250         }
       
   251 
       
   252     TInt retCode(iItems.Append(&aKey, pItem));
       
   253     if( retCode != KErrNone )
       
   254         {
       
   255         delete pItem;
       
   256         }
       
   257     return retCode;
       
   258     }
       
   259        
       
   260 TInt CSenContext::Update(const TDesC8& aKey, TAny* aValue)
       
   261     {
       
   262     TInt leaveCode(KErrNone);
       
   263     CSenContextItem* pItem = NULL;
       
   264     TRAP( leaveCode, pItem = CSenContextItem::NewL(aValue); )
       
   265     if( leaveCode != KErrNone ) 
       
   266         {
       
   267         return leaveCode;
       
   268         }
       
   269 
       
   270     TInt retCode(iItems.UpdateValue(&aKey, pItem));
       
   271     if( retCode != KErrNone )
       
   272         {
       
   273         delete pItem;
       
   274         }
       
   275     return retCode;
       
   276     }
       
   277        
       
   278 TAny* CSenContext::GetAnyL(const TDesC8& aKey)	//codescannerwarnings
       
   279     {
       
   280     TAny* retVal = NULL;
       
   281 
       
   282     TInt index = iItems.Find(aKey);
       
   283     if ( index != KErrNotFound )
       
   284         {
       
   285         const CSenContextItem* pItem = iItems.ValueAt(index);
       
   286         retVal = pItem->ToAnyL();
       
   287         }
       
   288     return retVal;
       
   289     }
       
   290      
       
   291 TInt CSenContext::Remove(const TDesC8& aKey) 
       
   292     {
       
   293     return iItems.RemoveByKey(aKey);
       
   294     }
       
   295 
       
   296 TInt CSenContext::Count() const
       
   297     {
       
   298     return iItems.Count();
       
   299     }
       
   300 
       
   301 TPtrC8 CSenContext::KeyAtL(TInt aIndex)
       
   302     {
       
   303     return *iItems.KeyAt(aIndex);
       
   304     }
       
   305 
       
   306 void CSenContext::Reset()
       
   307     {
       
   308     iItems.Reset();
       
   309     }
       
   310     
       
   311 TInt CSenContext::SetDirection( SenContext::TContextDirection aDirection )
       
   312     {
       
   313     iDirection = aDirection;
       
   314     return KErrNone;
       
   315     }
       
   316     
       
   317 const CSenXmlReader* CSenContext::GetParser()
       
   318     {
       
   319     return NULL; 
       
   320     }
       
   321     
       
   322 
       
   323 // End of file
       
   324