--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsutils/src/senidentifier.cpp Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,272 @@
+/*
+* Copyright (c) 2005 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:
+*
+*/
+
+
+
+
+
+
+
+
+#include "senidentifier.h"
+#include "sencertutils.h"
+
+#include "senlogger.h"
+
+EXPORT_C CSenIdentifier* CSenIdentifier::NewL()
+ {
+ CSenIdentifier* self = NewLC();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C CSenIdentifier* CSenIdentifier::NewLC()
+ {
+ CSenIdentifier* self = new (ELeave) CSenIdentifier();
+ CleanupStack::PushL(self);
+ self->ConstructL(SenIdentifier::EUnknown, KNullDesC8(), KNullDesC8());
+ return self;
+ }
+
+EXPORT_C CSenIdentifier* CSenIdentifier::NewL(const CSenIdentifier& aParent)
+ {
+ CSenIdentifier* self = NewLC(aParent);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C CSenIdentifier* CSenIdentifier::NewLC(const CSenIdentifier& aParent)
+ {
+ CSenIdentifier* self = new (ELeave) CSenIdentifier();
+ CleanupStack::PushL(self);
+ self->ConstructL(aParent);
+ return self;
+ }
+
+
+EXPORT_C CSenIdentifier* CSenIdentifier::NewL(SenIdentifier::TIdentifierType aIdentifierType,
+ const TDesC8& aIdentifierValue)
+ {
+ CSenIdentifier* self = NewLC(aIdentifierType, aIdentifierValue);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C CSenIdentifier* CSenIdentifier::NewLC(SenIdentifier::TIdentifierType aIdentifierType,
+ const TDesC8& aIdentifierValue)
+ {
+ CSenIdentifier* self = new (ELeave) CSenIdentifier();
+ CleanupStack::PushL(self);
+ self->ConstructL(aIdentifierType, aIdentifierValue, KNullDesC8());
+ return self;
+ }
+
+
+EXPORT_C CSenIdentifier* CSenIdentifier::NewL(SenIdentifier::TIdentifierType aIdentifierType,
+ const TCertInfo& aCertInfo)
+ {
+ CSenIdentifier* self = NewLC(aIdentifierType, aCertInfo);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C CSenIdentifier* CSenIdentifier::NewLC(SenIdentifier::TIdentifierType aIdentifierType,
+ const TCertInfo& aCertInfo)
+ {
+ CSenIdentifier* self = new (ELeave) CSenIdentifier();
+ CleanupStack::PushL(self);
+ HBufC8* pCertInfo = SenCertUtils::CertInfoToStringLC(aCertInfo);
+ self->ConstructL(aIdentifierType, *pCertInfo, KNullDesC8);
+ CleanupStack::PopAndDestroy(); // CertInfoToStringLC
+ return self;
+ }
+
+
+EXPORT_C CSenIdentifier* CSenIdentifier::NewL(SenIdentifier::TIdentifierType aIdentifierType,
+ const TDesC8& aIdentifierValue,
+ const TDesC8& aFriendlyName)
+ {
+ CSenIdentifier* self = NewLC(aIdentifierType, aIdentifierValue, aFriendlyName);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C CSenIdentifier* CSenIdentifier::NewLC(SenIdentifier::TIdentifierType aIdentifierType,
+ const TDesC8& aIdentifierValue,
+ const TDesC8& aFriendlyName)
+ {
+ CSenIdentifier* self = new (ELeave) CSenIdentifier();
+ CleanupStack::PushL(self);
+ self->ConstructL(aIdentifierType, aIdentifierValue, aFriendlyName);
+ return self;
+ }
+
+
+void CSenIdentifier::ConstructL(SenIdentifier::TIdentifierType aIdentifierType,
+ const TDesC8& aIdentifierValue,
+ const TDesC8& aFriendlyName)
+ {
+ TLSLOG_L(KSenUtilsLogChannel, KMinLogLevel, "CSenIdentifier::ConstructL - Start");
+
+ iType = aIdentifierType;
+ ipValue = aIdentifierValue.AllocL();
+ ipFriendlyName = aFriendlyName.AllocL();
+ ipStatements = CSenAttributes::NewL();
+ ipParent = this;
+ TLSLOG_L(KSenUtilsLogChannel, KMinLogLevel, "CSenIdentifier::ConstructL - End");
+ }
+
+void CSenIdentifier::ConstructL(const CSenIdentifier& aParent)
+ {
+ TLSLOG_L(KSenUtilsLogChannel, KMinLogLevel, "CSenIdentifier::ConstructL - Start");
+ iType = aParent.iType;
+ ipValue = aParent.Value().AllocL();
+ ipFriendlyName = aParent.ipFriendlyName->AllocL();
+ ipStatements = CSenAttributes::NewL(aParent.Statements());
+
+ // Note that all childs in chain get the root as their parent(!):
+ ipParent = CSenIdentifier::NewL(aParent.Parent());
+ TLSLOG_L(KSenUtilsLogChannel, KMinLogLevel, "CSenIdentifier::ConstructL - End");
+ }
+
+CSenIdentifier::CSenIdentifier() :
+ ipValue(NULL),
+ ipFriendlyName(NULL),
+ ipStatements(NULL)
+ {
+
+ iType = SenIdentifier::EUnknown;
+ }
+
+
+EXPORT_C CSenIdentifier::~CSenIdentifier()
+ {
+ delete ipValue; // it is safe to delete NULL in Symbian C++
+ delete ipFriendlyName;
+ delete ipStatements;
+
+ delete Proxy(); // destroy the parent (proxy), if such is owned
+ /*
+ if ( IsProxy() ) // atm equal to: delete Proxy();
+ {
+ delete ipParent; // mm: was identifier ment to take ownership of its parent?
+ }
+ */
+ }
+
+
+EXPORT_C TPtrC8 CSenIdentifier::Value() const
+ {
+ return *ipValue;
+ }
+
+
+EXPORT_C SenIdentifier::TIdentifierType CSenIdentifier::Type() const
+ {
+ return iType;
+ }
+
+
+EXPORT_C TBool CSenIdentifier::Equals(const CSenIdentifier& otherIdentifier)
+ {
+ TBool result = EFalse;
+ result = (iType == otherIdentifier.Type()) && (0 == ipValue->Compare(otherIdentifier.Value()));
+ return(result);
+ }
+
+// == ParentFor
+EXPORT_C void CSenIdentifier::ProxyFor( CSenIdentifier* aIdentifier )
+ {
+ ipParent = aIdentifier;
+ }
+
+/*
+
+EXPORT_C TBool CSenIdentifier::IsProxy() const
+ {
+ // if parent is NULL, then this is the root
+ // and is thus not a proxy for another identifier
+
+ return(!(ipParent == NULL));
+ }
+
+// == Parent()
+EXPORT_C const CSenIdentifier* CSenIdentifier::Proxy() const
+ {
+ return(ipParent);
+ }
+
+
+EXPORT_C const CSenIdentifier* CSenIdentifier::Root() const
+ {
+ return( (IsProxy()) ? ipParent : this );
+ }
+*/
+
+EXPORT_C TBool CSenIdentifier::IsProxy() const
+ {
+ // If parent is this, then this is the root
+ // and thus not a proxy for another identifier
+ return(!(ipParent == this));
+ }
+
+// return the parent (or this, if this is not a proxy)
+EXPORT_C const CSenIdentifier* CSenIdentifier::Proxy() const
+ {
+ return( IsProxy() ? ipParent : NULL );
+ }
+
+// return the root of (possible parent)
+EXPORT_C const CSenIdentifier* CSenIdentifier::Root() const
+ {
+ return( IsProxy() ? ipParent->Root() : this );
+ }
+
+EXPORT_C void CSenIdentifier::AddAttributeL( CSenAttribute& aAttribute ) //codescannerwarnings
+ {
+ ipStatements->AddAttributeL(aAttribute); //codescannerwarnings
+ }
+
+
+EXPORT_C const CSenAttributes* CSenIdentifier::Attributes() const
+ {
+ return ipStatements;
+ }
+
+EXPORT_C TBool CSenIdentifier::operator==(const CSenIdentifier& a)
+ {
+ return (this==&a);
+ }
+
+const CSenIdentifier& CSenIdentifier::Parent() const
+ {
+ // if(!ipParent) User::Leave( <define leave code >
+ return *ipParent;
+ }
+
+const CSenAttributes& CSenIdentifier::Statements() const
+ {
+ // if(!ipStatements) User::Leave( <define leave code >
+ return *ipStatements;
+ }
+
+// End of file
+
+
+
+
+