diff -r 000000000000 -r 29b1cd4cb562 bluetooth/btsdp/database/SDPAttribute.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetooth/btsdp/database/SDPAttribute.h Fri Jan 15 08:13:17 2010 +0200 @@ -0,0 +1,105 @@ +// Copyright (c) 2000-2009 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: +// + + +#ifndef SDPATTRIBUTE_H +#define SDPATTRIBUTE_H + +#include +#include "sdputil.h" + +class MAttributeVisitor; + +class CSdpAttr; + +typedef TOrderedQue TServAttrList; +typedef TDblQueIter TServAttrIter; + +/** + SDP Service Attribute. + Contains the Attribute ID and value pair. +**/ +NONSHARABLE_CLASS(CSdpAttr) : public CBase, public MSdpElementBuilder + { +public: + IMPORT_C static CSdpAttr* NewL(TUint16 aAttrID,MSdpElementBuilder* aParent); + ~CSdpAttr(); + inline TSdpAttributeID AttributeID() const; + inline const CSdpAttrValue& Value() const; + inline CSdpAttrValue& Value(); + inline CSdpAttrValue* ReleaseValue(); + inline TBool operator>(const CSdpAttr& aAttr) const; + inline static TInt LinkOffset(); + + IMPORT_C void AcceptVisitorL(MAttributeVisitor& aVisitor); + + // MSdpElementBuilder interface + virtual MSdpElementBuilder* BuildNilL(); + virtual MSdpElementBuilder* BuildUintL(const TDesC8& aUint); + virtual MSdpElementBuilder* BuildIntL(const TDesC8& aInt); + virtual MSdpElementBuilder* BuildUUIDL(const TUUID& aUUID); + virtual MSdpElementBuilder* BuildBooleanL(TBool aBool); + virtual MSdpElementBuilder* BuildStringL(const TDesC8& aString); + virtual MSdpElementBuilder* BuildDESL(); + virtual MSdpElementBuilder* BuildDEAL(); + virtual MSdpElementBuilder* BuildURLL(const TDesC8& aString); + virtual MSdpElementBuilder* BuildEncodedL(const TDesC8& aString); +private: + CSdpAttr(TUint16 aAttrID,MSdpElementBuilder* aParent); + void ConstructL(); + void Reset(); + +private: + MSdpElementBuilder* iParent; + CSdpAttrValue* iAttrValue; + TSdpAttributeID iAttrID; + TDblQueLink iLink; + }; + +inline TSdpAttributeID CSdpAttr::AttributeID() const + { + return iAttrID; + } + +inline const CSdpAttrValue& CSdpAttr::Value() const + { + return const_cast(this)->Value(); + } + + +inline CSdpAttrValue& CSdpAttr::Value() + { + __ASSERT_DEBUG(iAttrValue, User::Panic(_L("Sdp Database"), ESdpNoAttrValue)); + return *iAttrValue; + } + +inline CSdpAttrValue* CSdpAttr::ReleaseValue() + { + CSdpAttrValue* p = iAttrValue; + iAttrValue = 0; + return p; + } + +inline TBool CSdpAttr::operator>(const CSdpAttr& aAttr) const + { + return iAttrID > aAttr.iAttrID; + } + +inline TInt CSdpAttr::LinkOffset() + { + return _FOFF(CSdpAttr, iLink); + } + +#endif