diff -r 000000000000 -r 094583676ce7 wvsettings20/IMPSSrc/IMPSSAPObjectHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvsettings20/IMPSSrc/IMPSSAPObjectHandler.h Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,132 @@ +/* +* Copyright (c) 2004 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: Object handler implementation. +* +*/ + +#ifndef __IMPSSAPOBJECTHANDLER_H +#define __IMPSSAPOBJECTHANDLER_H + +// INCLUDES +#include "MIMPSSapObject.h" +#include + + + + +// CLASS DECLARATION +/** + * Object handler implementation + * for generic MIMPSSapObject derived objects. + * + * Handles versioned objects and their data. + * Can internalize data produced with newer + * versions of software having more fields + * than current implementation. + * + * + * @since 3.0 + */ +NONSHARABLE_CLASS( IMPSSAPObjectHandler ) + { + +public: // New methods + + /** + * Gets the data size. + * + * Calculates the data size needed to externalize + * given object using IMPSSAPObjectHandler::ExternalizeL() + * service. + * + * @since 3.0 + * @param aObj The object which data size to get. + * @return The data size needed to externalize the + * given object. + */ + static TInt DataSize( const MIMPSSapObject& aObj ); + + + /** + * Externalizes object to given write stream. + * + * Externalizes object to given write stream. + * Stores additional version and control information + * inside the stream so internalization can be + * done later e.g with higher versioned component + * having new data fields. This implementation is + * tested with following stream types: + * - file + * - buffer + * + * NOTE! Versioning is based on usage of: + * - MIMPSSapObject::ObjectVersion() + * - MIMPSSapObject::ExternalizeVersionDataL() + * - MIMPSSapObject::InternalizeVersionDataL() + * + * @since 3.0 + * @param aObj The object to externalize. + * @aStream aStream The stream to write the data. + */ + static void ExternalizeL( const MIMPSSapObject& aObj, + RWriteStream& aStream ); + + + /** + * Internalizes object from given read stream. + * + * Internalizes object from given read stream. + * Reads additional version and control information + * from the stream so internalization is capable to + * read streams generated e.g with older versions + * of component having fewer data fields. + * This implementation is tested with the following + * stream types: + * - file + * - buffer + * + * NOTE! Versioning is based on usage of: + * - MIMPSSapObject::ObjectVersion() + * - MIMPSSapObject::InternalizeVersionDataL() + * + * @since 3.0 + * @param aObj The object to internalize. + * @aStream aStream The stream to read the data. + */ + static void InternalizeL( MIMPSSapObject& aObj, RReadStream& aStream ); + + + /** + * Copies given source data / state to + * target object. + * + * @since 3.0 + * @param aSource The object to copy. + * @param aTarget The target for copy, + */ + static void CopyL( const MIMPSSapObject& aSource, + MIMPSSapObject& aTarget ); + + + +private: // Prohibited constructor & destructor + + IMPSSAPObjectHandler(); + ~IMPSSAPObjectHandler(); + }; + + +#endif // __IMPSSAPOBJECTHANDLER_H + +// End of File