diff -r 000000000000 -r b497e44ab2fc syncmlfw/ds/dsutils/dbcaps/inc/NSmldbcapsSerializer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/ds/dsutils/dbcaps/inc/NSmldbcapsSerializer.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,283 @@ +/* +* 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: for dbcaps streaming and converting to CSmlDataStoreFormat. +* +*/ + + +#ifndef __NSMLDBCAPSSERIALIZER_H__ +#define __NSMLDBCAPSSERIALIZER_H__ + +// ------------------------------------------------------------------------------------------------ +// Includes +// ------------------------------------------------------------------------------------------------ +#include +#include + +// ------------------------------------------------------------------------------------------------ +// Class forwards +// ------------------------------------------------------------------------------------------------ +class CNSmlDbCaps; +class CNSmlDevInfProp; +class CNSmlPropParam; +class CNSmlDevInfProp; +class CNSmlCtCap; +class CNSmlFilterCap; +struct sml_devinf_propparam_s; +struct sml_devinf_property_s; +struct sml_devinf_filtercap_s; +struct sml_devinf_ctcap_s; +struct sml_pcdata_list_s; +struct sml_pcdata_s; + +// ------------------------------------------------------------------------------------------------ +// TNSmlDbCapsSerializer +// Handles internalization and externalization of CNSmlDbCaps to stream, that can +// be internalized to and externalized from CSmlDataStoreFormat. +// +// @lib nsmldbcaps.lib +// ------------------------------------------------------------------------------------------------ +class TNSmlDbCapsSerializer + { + private: + + // ------------------------------------------------------------------------------------------------ + // CNSmlFilterCapabilityData + // Data for CSmlFilterCapability + // + // @lib nsmldbcaps.lib + // ------------------------------------------------------------------------------------------------ + struct CNSmlFilterCapabilityData + { + /** + * constructs CNSmlFilterCapabilityData + * @return CNSmlFilterCapabilityData*. Created instance + */ + static CNSmlFilterCapabilityData* NewLC(); + + /** + * C++ Destructor + */ + ~CNSmlFilterCapabilityData(); + + /** + * fills members from array of filtercapdata + * @param aFilterInfoArr. array of filter capabilities. + */ + void MakeL( const RStringPool& aStringPool, const CArrayFix& aFilterInfoArr ); + + public: //Data + + RPointerArray iFilterCapabilities; + RArray iKeywordList; + RArray iPropertyList; + RStringF iMimeVersion; + RStringF iMimeType; + }; + + // ------------------------------------------------------------------------------------------------ + // CNSmlDataFieldFromDbCaps + // inherited from CSmlDataField to have access to protected member variables. + // + // @lib nsmldbcaps.lib + // ------------------------------------------------------------------------------------------------ + class CNSmlDataFieldFromDbCaps : public CSmlDataField + { + public: + + /** + * constructs CSmlDataField from parameters + * @param aStringPool. string pool to use + * @param aDisplayName. display name- field + * @param aPropName. property name- field + * @param aDataType. datatype name- field + * @param aValEnums. value enumerations + * @return CSmlDataField*. created instance. + */ + static CSmlDataField* NewLC( + const RStringPool& aStringPool, + const TPtrC8& aDisplayName, + const TPtrC8& aPropName, + const TPtrC8& aDataType, + const sml_pcdata_list_s* aValEnums); + + }; + + // ------------------------------------------------------------------------------------------------ + // CNSmlDataPropertyParamFromDbCaps + // inherited from CSmlDataPropertyParam to have access to protected member variables. + // + // @lib nsmldbcaps.lib + // ------------------------------------------------------------------------------------------------ + class CNSmlDataPropertyParamFromDbCaps : CSmlDataPropertyParam + { + public: + + /** + * constructs CSmlDataPropertyParam from parameters + * @param aStringPool. string pool to use + * @param aDipp. property parameters + * @return CSmlDataPropertyParam*. created instance. + */ + static CSmlDataPropertyParam* NewLC( const RStringPool& aStringPool, + const sml_devinf_propparam_s* aDipp ); + }; + + // ------------------------------------------------------------------------------------------------ + // CNSmlDataPropertyFromDbCaps + // inherited from CSmlDataProperty to have access to protected member variables. + // + // @lib nsmldbcaps.lib + // ------------------------------------------------------------------------------------------------ + class CNSmlDataPropertyFromDbCaps : CSmlDataProperty + { + public: + + /** + * constructs CSmlDataProperty from parameters + * @param aStringPool. string pool to use + * @param aDipp. properties + * @return CSmlDataProperty*. created instance. + */ + static CSmlDataProperty* NewLC( const RStringPool& aStringPool, const sml_devinf_property_s* aDipp ); + }; + + // ------------------------------------------------------------------------------------------------ + // CNSmlFilterCapabilityFromDbCaps + // inherited from CSmlFilterCapability to have access to protected member variables. + // + // @lib nsmldbcaps.lib + // ------------------------------------------------------------------------------------------------ + class CNSmlFilterCapabilityFromDbCaps : CSmlFilterCapability + { + public: + + /** + * constructs CSmlFilterCapability from parameters + * @param aStringPool. string pool to use + * @param aFtCap. filter capabilities + * @return CSmlFilterCapability*. created instance. + */ + static CSmlFilterCapability* NewLC( const RStringPool& aStringPool, const sml_devinf_filtercap_s* aFtCap ); + }; + + // ------------------------------------------------------------------------------------------------ + // CNSmlMimeFormatFromDbCaps + // inherited from CSmlMimeFormat to have access to protected member variables. + // + // @lib nsmldbcaps.lib + // ------------------------------------------------------------------------------------------------ + class CNSmlMimeFormatFromDbCaps : CSmlMimeFormat + { + public: + + /** + * constructs CSmlMimeFormat from parameters + * @param aStringPool. string pool to use + * @param aDic. ctcap. + * @return CSmlMimeFormat*. created instance. + */ + static CSmlMimeFormat* NewLC( const RStringPool& aStringPool, const sml_devinf_ctcap_s& aDic ); + }; + // ------------------------------------------------------------------------------------------------ + // CNSmlDataStoreFormatFromDbCaps + // inherited from CSmlDataStoreFormat to have access to protected member variables. + // + // @lib nsmldbcaps.lib + // ------------------------------------------------------------------------------------------------ + class CNSmlDataStoreFormatFromDbCaps : CSmlDataStoreFormat + { + public: + + /** + * constructs CSmlDataStoreFormat from parameters + * @param aStringPool. string pool to use + * @param aDbCaps. Db caps + * @return CSmlDataStoreFormat*. created instance. + */ + static CSmlDataStoreFormat* NewLC( const RStringPool& aStringPool, const CNSmlDbCaps& aDbCaps ); + }; + + public: //Constructor + IMPORT_C TNSmlDbCapsSerializer(); + + /** + * Internalizes from data store stream to dbcaps instance. + * @param aDataStoreFormatStream. Store format stream. + * @return CNSmlDbCaps*. Instance internalized from stream. + */ + IMPORT_C CNSmlDbCaps* InternalizeL( RReadStream& aDataStoreFormatStream ) const; + + /** + * externalizes from dbcaps to data store stream + * @param aDbCaps. Object to externalize + * @param aDataStoreFormatStream. Stream, where externalized + */ + IMPORT_C void ExternalizeL( const CNSmlDbCaps& aDbCaps, RWriteStream& aDataStoreFormatStream ) const; + /** + * externalizes from dbcaps to data store stream + * @param const CArrayFix& aFilterInfoArr. filter info to externalize. + * @param aDataStoreFormatStream. Stream, where externalized + */ + IMPORT_C void ExternalizeL( const CNSmlDbCaps& aDbCaps, const CArrayFix& aFilterInfoArr, RWriteStream& aDataStoreFormatStream ) const; + + /** + * copies and converts data from aFrom to aTo + * @param aFrom. Source Object + * @param aTo. Destination Object + */ + IMPORT_C void SetFromL( const CSmlDataProperty& aFrom, CNSmlDevInfProp& aTo ) const; + + /** + * checks for null before returning data pointer + * @param aPcdata. place to extract pointer. + * @return. safe data pointer + */ + static TPtrC8 SafePtr( sml_pcdata_s* aPcdata ); + + private: + + /** + * copies and converts data from aFrom to aTo + * @param aFrom. Source Object + * @param aTo. Destination Object + */ + void SetFromL( const CSmlDataStoreFormat& aFrom, CNSmlDbCaps& aTo ) const; + + /** + * copies and converts data from aFrom to aTo + * @param aFrom. Source Object + * @param aTo. Destination Object + */ + void SetFromL( const CSmlDataPropertyParam& aFrom, CNSmlPropParam& aTo ) const; + + /** + * copies and converts data from aFrom to aTo + * @param aFrom. Source Object + * @param aTo. Destination Object + */ + void SetFromL( const CSmlMimeFormat& aFrom, CNSmlCtCap& aTo ) const; + + /** + * copies and converts data from aFrom to aTo + * @param aFrom. Source Object + * @param aTo. Destination Object + */ + void SetFromL( const CSmlFilterCapability& aFrom, CNSmlFilterCap& aTo ) const; + private: + }; + +#endif //__NSMLDBCAPSSERIALIZER_H__ + +// End of File