commsfwsupport/commselements/NetMeta/inc/MetaContainer.h
changeset 0 dfb7c4ff071f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwsupport/commselements/NetMeta/inc/MetaContainer.h	Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,84 @@
+// Copyright (c) 2004-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:
+//
+
+/**
+ @file 
+ @internalTechnology
+*/
+
+#if (!defined METACONTAINER_H)
+#define METACONTAINER_H
+
+#include <e32base.h>
+#include <e32std.h>
+#include <elements/metadata.h>
+
+
+namespace Meta
+{
+
+class RMetaDataContainerBase : public RPointerArray<SMetaData>
+/**
+
+Container of meta objects.
+Base class.
+Derived containers need to implement static LoadL.
+
+@internalComponent
+@released since v9.0 */
+    {
+public:
+	IMPORT_C explicit RMetaDataContainerBase();
+
+    IMPORT_C void Copy(const RMetaDataContainerBase& aMetaContainer);
+    IMPORT_C TInt Store(TDes8& aDes) const;
+
+    IMPORT_C TInt Load(TPtrC8& aDes);
+	IMPORT_C TInt Length() const;
+
+	IMPORT_C STypeId GetTypeId() const;
+
+protected:
+	virtual SMetaData* LoadElementL(TPtrC8& aDes) = 0;
+    };
+
+template<class ELEMENT>
+class RMetaDataContainer : public RMetaDataContainerBase
+/**
+
+Templated container of meta objects that implements static LoadL.
+Meta object type (template parameter) needs to implement its own static LoadL.
+
+@internalComponent
+@released since v9.0 */
+	{
+public:
+	static RMetaDataContainer<ELEMENT>* LoadL(TPtrC8& aDes);
+
+	explicit inline RMetaDataContainer();
+
+protected:
+	virtual SMetaData* LoadElementL(TPtrC8& aDes);
+	};
+
+typedef RMetaDataContainer<SMetaDataECom> RMetaDataEComContainer;
+
+} //namespace Meta
+
+#include <elements/metacontainer.inl>
+
+#endif //METACONTAINER_H
+
+