diff -r 000000000000 -r 62f9d29f7211 webservices/wsframework/inc/senlayeredxmlproperties.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webservices/wsframework/inc/senlayeredxmlproperties.h Thu Jan 07 16:19:19 2010 +0200 @@ -0,0 +1,273 @@ +/* +* Copyright (c) 2006 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: Header declaration +* +*/ + + + + + + + + +#ifndef SEN_LAYERED_XML_PROPERTIES_H +#define SEN_LAYERED_XML_PROPERTIES_H + +#include +#include + +#include "msenlayeredproperties.h" + +// FORWARD DECLARATIONS +class RWriteStream; +class CSenXmlReader; +class CSenPropertiesFragment; + +_LIT8(KSenLayeredXmlPropertiesLocalname, "Properties"); + +class CSenLayeredXmlProperties : public CBase, public MSenLayeredProperties + { + public: + + static CSenLayeredXmlProperties* NewL(); + static CSenLayeredXmlProperties* NewLC(); + + static CSenLayeredXmlProperties* NewL(const TDesC8& aXmlUtf8, CSenXmlReader& aParser); + static CSenLayeredXmlProperties* NewLC(const TDesC8& aXmlUtf8, CSenXmlReader& aParser); + + static CSenLayeredXmlProperties* NewL(const CSenElement& aElement); + static CSenLayeredXmlProperties* NewLC(const CSenElement& aElement); + + static CSenLayeredXmlProperties* NewL(RStringPool& aStringPool); + static CSenLayeredXmlProperties* NewLC(RStringPool& aStringPool); + + static CSenLayeredXmlProperties* NewL(const TDesC8& aXmlUtf8, CSenXmlReader& aParser, RStringPool& aStringPool); + static CSenLayeredXmlProperties* NewLC(const TDesC8& aXmlUtf8, CSenXmlReader& aParser, RStringPool& aStringPool); + + static CSenLayeredXmlProperties* NewL(const CSenElement& aElement, RStringPool& aStringPool); + static CSenLayeredXmlProperties* NewLC(const CSenElement& aElement, RStringPool& aStringPool); + + // From MSenProperties + virtual void SetReader(CSenXmlReader& aReader); + virtual TSenPropertiesClassType PropertiesClassType(); + virtual void WriteToL(RWriteStream& aWriteStream); + virtual void ReadFromL(const TDesC8& aBuffer); + virtual HBufC8* AsUtf8L(); + virtual HBufC8* AsUtf8LC(); + virtual TBool IsSafeToCast(TSenPropertiesClassType aClass); + /** + * @see MSenProperties + * Leave codes: + * KErrSenInvalidCharacters if aName contains illegal characters. + * KErrSenZeroLengthDescriptor if aName is zero length. + */ + virtual TInt SetPropertyL(const TDesC8& aName, + const TDesC8& aValue); + + virtual TInt PropertyL(const TDesC8& aName, + TPtrC8& aValue); + + /** + * @see MSenProperties + * Leave codes: + * KErrSenInvalidCharacters if aName contains illegal characters. + * KErrSenZeroLengthDescriptor if aName is zero length. + */ + virtual TInt SetIntPropertyL(const TDesC8& aName, + const TInt aValue); + + virtual TInt IntPropertyL(const TDesC8& aName, + TInt& aValue); + /** + * @see MSenProperties + * Leave codes: + * KErrSenInvalidCharacters if aName contains illegal characters. + * KErrSenZeroLengthDescriptor if aName is zero length. + */ + virtual TInt SetBoolPropertyL(const TDesC8& aName, + const TBool aValue); + virtual TInt BoolPropertyL(const TDesC8& aName, + TBool& aValue); + /** + * @see MSenProperties + * Leave codes: + * KErrSenInvalidCharacters if aName contains illegal characters. + * KErrSenZeroLengthDescriptor if aName is zero length. + */ + virtual TInt SetOmittedL(const TDesC8& aName, TBool aValue); + virtual TInt RemovePropertyL(const TDesC8& aName); + + // From MSenLayeredProperties + virtual void WriteToL(RWriteStream& aWriteStream, TSenPropertiesLayer aLayer); + virtual void ReadFromL(const TDesC8& aBuffer, TSenPropertiesLayer aLayer); + virtual HBufC8* AsUtf8L(TSenPropertiesLayer aLayer); + virtual HBufC8* AsUtf8LC(TSenPropertiesLayer aLayer); + virtual TInt ShrinkTo(TSenPropertiesLayer aLayer); + virtual void ExpandToL(TSenPropertiesLayer aLayer); + virtual TSenPropertiesLayer TopLayer(); + + /** + * @see MSenLayeredProperties + * Leave codes: + * KErrSenInvalidCharacters if aName contains illegal characters. + * KErrSenZeroLengthDescriptor if aName is zero length. + */ + virtual TInt SetPropertyL(const TDesC8& aName, + const TDesC8& aValue, + TSenPropertiesLayer aLayer); + + virtual TInt PropertyL(const TDesC8& aName, + TPtrC8& aValue, + TSenPropertiesLayer aLayer); + + virtual TInt PropertyL(const TDesC8& aName, + MSenProperty*& aValue, + TSenPropertiesLayer aLayer); + + virtual TInt PropertyL(const TDesC8& aName, + MSenProperty*& aValue); + + /** + * Sets new property with certain type. + * + * If property with given name does not exist, + * new property with given value will be added. Otherwise the value of + * existing property will be updated. + * + * @since Series60 + * @param aName Name of the property, which can be later used to + * refer the given value. + * @param aValue Is the value of this property. + * @param aType Is the type of this property. + * @return KErrNone if no error, or some of the system wide + * error codes. + */ + virtual TInt SetPropertyL(const TDesC8& aName, + const TDesC8& aValue, + const TDesC8& aType); + + /** + * Gets the value of the property behind certain name. + * @since Series60 + * @param aName The name identifying this property. + * @param aValue A TPtrC8 reference to be filled in with the value of + * the property. + * @param aType A TPtrC8 reference to be filled in with the type of + * the property. + * @return KErrNone if no error, or some of the system wide + * error codes. + */ + virtual TInt PropertyL(const TDesC8& aName, + TPtrC8& aValue, + TPtrC8& aType); + + virtual TInt PropertiesByTypeL(const TDesC8& aTypeName, + RPointerArray& aArray); + + /** + * @see MSenLayeredProperties + * Leave codes: + * KErrSenInvalidCharacters if aName contains illegal characters. + * KErrSenZeroLengthDescriptor if aName is zero length. + */ + virtual TInt SetIntPropertyL(const TDesC8& aName, const TInt aValue, + TSenPropertiesLayer aLayer); + + virtual TInt IntPropertyL(const TDesC8& aName, TInt& aValue, + TSenPropertiesLayer aLayer); + + virtual MSenProperties* CloneL() const; + + virtual MSenProperties* Clone(TInt& aOkOrError) const; + + /** + * @see MSenLayeredProperties + * Leave codes: + * KErrSenInvalidCharacters if aName contains illegal characters. + * KErrSenZeroLengthDescriptor if aName is zero length. + */ + virtual TInt SetBoolPropertyL(const TDesC8& aName, const TBool aValue, + TSenPropertiesLayer aLayer); + + virtual TInt BoolPropertyL(const TDesC8& aName, TBool& aValue, + TSenPropertiesLayer aLayer); + + /** + * @see MSenLayeredProperties + * Leave codes: + * KErrSenInvalidCharacters if aName contains illegal characters. + * KErrSenZeroLengthDescriptor if aName is zero length. + */ + virtual TInt SetOmittedL(const TDesC8& aName, TBool aValue, + TSenPropertiesLayer aLayer); + + virtual TInt RemovePropertyL(const TDesC8& aName, + TSenPropertiesLayer aLayer); + + /** + * Destructor. + */ + virtual ~CSenLayeredXmlProperties(); + + protected: // base class functions + + virtual void BaseConstructL(const TDesC8& aLocalname, + const TDesC8& aXml, + CSenXmlReader* aParser = NULL, + RStringPool* aStringPool = NULL); + + virtual void BaseConstructL(const TDesC8& aNamespace, + const TDesC8& aLocalname, + const TDesC8& aXml, + CSenXmlReader* aParser = NULL, + RStringPool* aStringPool = NULL); + + virtual void BaseConstructL(const TDesC8& aNamespace, + const TDesC8& aLocalname, + const TDesC8& aQualifiedName, + const TDesC8& aXml, + CSenXmlReader* aParser = NULL, + RStringPool* aStringPool = NULL); + + virtual void BaseConstructL(const CSenElement& aElement, + RStringPool* aStringPool = NULL); + + virtual TInt AllPropertiesByTypeL(const TDesC8& aTypeName, + RPointerArray& aArray); + + protected: + /** + * Constructor. + */ + CSenLayeredXmlProperties(); + + private: + void CreateChildPropertiesL(); //codescannerwarnings + void ElementsL(RPointerArray& aProps) const; + + protected: + CSenPropertiesFragment* ipFragment; + CSenLayeredXmlProperties* ipChildProperties; + + private: + TSenPropertiesLayer iLayer; + CSenXmlReader* ipReader; + CSenLayeredXmlProperties* ipParentProperties; + }; + +#endif // SEN_LAYERED_XML_PROPERTIES_H + +// End of File +