--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmappfw_plat/mpx_common_definition_api/inc/mpxcmn.h Thu Dec 17 08:55:47 2009 +0200
@@ -0,0 +1,356 @@
+/*
+* 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: Common utility functions
+*
+*/
+
+
+#ifndef MPXCMN_H
+#define MPXCMN_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <bamdesca.h>
+#include <badesca.h>
+#include <s32mem.h>
+#include <mpxuser.h>
+#include <mpxsession.h>
+#include <mpxcommonframeworkdefs.h>
+
+/**
+* Helper to copy an array.
+*
+* @since S60 3.2.3
+* @param aSrc soure
+* @param sDest destination
+*/
+template<typename T>
+inline void CopyArrayL(const TArray<T>& aSrc, RArray<T>& aDest);
+
+/**
+* Helper to copy a descriptor array.
+*
+* @since S60 3.2.3
+* @param aSrc soure
+* @param sDest destination
+*/
+inline void CopyArrayL(const MDesCArray& aSrc, CDesCArray& aDest);
+
+/**
+* Helper to transfer a buffer from server.
+*
+* @since S60 3.2.3
+* @param aSess session object
+* @param aCmd Cmd to read buffer from server
+* @param aSize size of buffer
+* @param aBuffer buffer to returned
+*/
+inline void TransferBufferFromServerL(const RMPXSession& aSess,
+ TInt aCmd,
+ TInt aSize,
+ CBufBase*& aBuffer);
+
+/**
+* Helper to create an array from stream.
+* Note: class T should public default C++ constructor.
+*
+* @since S60 3.2.3
+* @param aArray array object returned
+* @param aStream stream object
+*/
+template<typename T>
+inline void InternalizeL(RPointerArray<T>& aArray, RReadStream& aStream);
+
+/**
+* Helper to create an array from stream.
+* Note: CBased class T contains NewL().
+*
+* @since S60 3.2.3
+* @param aArray array object returned
+* @param aStream stream object
+*/
+template<typename T>
+inline void InternalizeCObjectArrayL(RPointerArray<T>& aArray,
+ RReadStream& aStream);
+
+/**
+* Helper to create an array from stream.
+*
+* @since S60 3.2.3
+* @param aArray array object returned
+* @param aStream stream object
+*/
+template<typename T>
+inline void InternalizeL(RArray<T>& aArray, RReadStream& aStream);
+
+/**
+* Helper to create a descriptor array from stream.
+*
+* @since S60 3.2.3
+* @param aArray descriptor array object returned
+* @param aStream stream object
+*/
+inline void InternalizeL(CDesCArray& aArray, RReadStream& aStream);
+
+/**
+* Helper to externalize an array to stream.
+*
+* @since S60 3.2.3
+* @param aArray array object
+* @param aStream stream object
+*/
+template<typename T>
+inline void ExternalizeL(const TArray<T*>& aArray, RWriteStream& aStream);
+
+/**
+* Helper to externalize an array to stream.
+*
+* @since S60 3.2.3
+* @param aArray array object
+* @param aStream stream object
+*/
+template<typename T>
+inline void ExternalizeL(const TArray<T>& aArray, RWriteStream& aStream);
+
+/**
+* Helper to externalize a descriptor array to stream.
+*
+* @since S60 3.2.3
+* @param aArray descriptor array object
+* @param aStream stream object
+*/
+inline void ExternalizeL(const MDesCArray& aArray, RWriteStream& aStream);
+
+/**
+* Helper to create an array from buf.
+*
+* @since S60 3.2.3
+* @param aBuf buf object
+* @param aArray array object returned
+*/
+template<typename T>
+inline void CreateFromBufferL(const CBufBase &aBuf, CArrayFix<T>*& aArray);
+
+/**
+* Helper to create a descriptor array from buf.
+*
+* @since S60 3.2.3
+* @param aBuf buf object
+* @param aArray descriptor array object returned
+*/
+inline void CreateFromBufferL(const CBufBase &aBuf, CDesCArray*& aArray);
+
+/**
+* Helper to create an array from buf.
+*
+* @since S60 3.2.3
+* @param aBuf buf object
+* @param aArray array object returned
+*/
+template<typename T>
+inline void CreateFromBufferL(const CBufBase &aBuf, RPointerArray<T>& aArray);
+
+/**
+* Helper to create an array from buf.
+*
+* @since S60 3.2.3
+* @param aBuf buf object
+* @param aArray array object returned
+*/
+template<typename T>
+inline void CreateFromBufferL(const CBufBase &aBuf, RArray<T>& aArray);
+
+/**
+* Helper to create an object from buf.
+* Note: use C++ default constructor to create a new object.
+*
+* @since S60 3.2.3
+* @param aBuf buf object
+* @param aObject created
+*/
+template<typename T>
+inline void CreateFromBufferL(const CBufBase &aBuf, T*& aObject);
+
+/**
+* Helper to create an object from buf.
+* Note: class T must implement T::NewL() constructor.
+*
+* @since S60 3.2.3
+* @param aBuf buf object
+* @param aObject created
+*/
+template<typename T>
+inline void NewFromBufferL(const CBufBase &aBuf, T*& aObject);
+
+
+/**
+* Helper to create an object from a message buffer.
+*
+* @since S60 3.2.3
+* @param aMessage the message
+* @param aMsgSlot message slot index
+*/
+template<typename T>
+inline void CreateFromMessageL(const RMessage2& aMessage,
+ TInt aMsgSlot,
+ T*& aObject);
+
+/**
+* Helper to create an object from a message buffer.
+* Note: class T must implement T::NewL() constructor.
+*
+* @since S60 3.2.3
+* @param aMessage the message
+* @param aMsgSlot message slot index
+*/
+template<typename T>
+inline void NewFromMessageL(const RMessage2& aMessage,
+ TInt aMsgSlot,
+ T*& aObject);
+
+/**
+* Copy an object into the buffer.
+*
+* @since S60 3.2.3
+* @param aObj the object
+* @param aBuffer buffer object
+*/
+template<typename T>
+inline void CreateBufferL(const T& aObj, CBufBase*& aBuffer);
+
+/**
+* Fill up the buffer from an array.
+*
+* @since S60 3.2.3
+* @param aArray an array of object
+* @param aBuffer buffer object
+*/
+template<typename T>
+inline void CreateBufferL(const TArray<T>& aArray, CBufBase*& aBuffer);
+
+/**
+* Fill up the buffer from an array.
+*
+* @since S60 3.2.3
+* @param aArray an array of object pointer
+* @param aBuffer buffer object
+*/
+template<typename T>
+inline void CreateBufferL(const TArray<T*>& aArray, CBufBase*& aBuffer);
+
+/**
+* Helper to transfer an array from server.
+*
+* @since S60 3.2.3
+* @param aSess session object
+* @param aCmd Cmd to read buffer from server
+* @param aSize size of buffer
+* @param aArray array to returned
+*/
+template<typename T>
+void ArrayFromServerL(const RMPXSession& aSess,
+ TInt aCmd,
+ TInt aSize,
+ CArrayFixBase*& aArray);
+
+/**
+* Helper to transfer an array from server.
+*
+* @since S60 3.2.3
+* @param aSess session object
+* @param aCmd Cmd to read buffer from server
+* @param aSize size of buffer
+* @param aArray array to returned
+*/
+template<typename T>
+void ArrayFromServerL(const RMPXSession& aSess,
+ TInt aCmd,
+ TInt aSize,
+ RPointerArray<T>& aArray);
+
+/**
+* Helper to transfer an array from server.
+*
+* @since S60 3.2.3
+* @param aSess session object
+* @param aCmd Cmd to read buffer from server
+* @param aSize size of buffer
+* @param aArray array to returned
+*/
+template<typename T>
+void ArrayFromServerL(const RMPXSession& aSess,
+ TInt aCmd,
+ TInt aSize,
+ RArray<T>& aArray);
+
+/**
+* Packages an object of type T into a descriptor and writes back to the
+* client space in message slot aMsgSlot of aMessage.
+*
+* @since S60 3.2.3
+* @param aMessage message object
+* @param aMsgSlot message slot
+* @param aValue value
+*/
+template<typename T> void WriteL(const RMessage2& aMessage,
+ TInt aMsgSlot, T aValue);
+
+/**
+ * An array of pointers to objects that auto cleanup.
+ *
+ * @lib mpxcommon.lib
+ */
+template<class T>
+class RMPXPointerArray : public RPointerArray<T>
+ {
+ public:
+ /**
+ * Constructor.
+ *
+ * @since S60 3.2.3
+ */
+ inline RMPXPointerArray();
+
+ /**
+ * Closes the array and frees all
+ * resources (including deleting objects in the array).
+ *
+ * @since S60 3.2.3
+ */
+ inline void Close();
+
+ /**
+ * Destructor.
+ *
+ * @since S60 3.2.3
+ */
+ inline ~RMPXPointerArray();
+ };
+
+/**
+* Helper to delete an item from array.
+*
+* @since S60 3.2.3
+* @param aItem an item in the array to be deleted
+* @param aArray array object returned
+*/
+template<typename T>
+inline void DeleteL(const T* aItem, RPointerArray<T>& aArray);
+
+#include "mpxcmn.inl"
+
+#endif // MPXCMN_H
+
+// End of File