williamr@2: /** williamr@2: * Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @file MetaContainer.h williamr@2: @internalTechnology williamr@2: */ williamr@2: williamr@2: #if (!defined METACONTAINER_H) williamr@2: #define METACONTAINER_H williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: williamr@2: namespace Meta williamr@2: { williamr@2: williamr@2: class RMetaDataContainerBase : public RPointerArray williamr@2: /** williamr@2: williamr@2: Container of meta objects. williamr@2: Base class. williamr@2: Derived containers need to implement static LoadL. williamr@2: williamr@2: @internalComponent williamr@2: @released since v9.0 */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C explicit RMetaDataContainerBase(); williamr@2: williamr@2: IMPORT_C void Copy(const RMetaDataContainerBase& aMetaContainer); williamr@2: IMPORT_C TInt Store(TDes8& aDes) const; williamr@2: williamr@2: IMPORT_C TInt Load(TPtrC8& aDes); williamr@2: IMPORT_C TInt Length() const; williamr@2: williamr@2: IMPORT_C STypeId GetTypeId() const; williamr@2: williamr@2: protected: williamr@2: virtual SMetaData* LoadElementL(TPtrC8& aDes) = 0; williamr@2: }; williamr@2: williamr@2: template williamr@2: class RMetaDataContainer : public RMetaDataContainerBase williamr@2: /** williamr@2: williamr@2: Templated container of meta objects that implements static LoadL. williamr@2: Meta object type (template parameter) needs to implement its own static LoadL. williamr@2: williamr@2: @internalComponent williamr@2: @released since v9.0 */ williamr@2: { williamr@2: public: williamr@2: static RMetaDataContainer* LoadL(TPtrC8& aDes); williamr@2: williamr@2: explicit inline RMetaDataContainer(); williamr@2: williamr@2: protected: williamr@2: virtual SMetaData* LoadElementL(TPtrC8& aDes); williamr@2: }; williamr@2: williamr@2: typedef RMetaDataContainer RMetaDataEComContainer; williamr@2: williamr@2: } //namespace Meta williamr@2: williamr@2: #include williamr@2: williamr@2: #endif //METACONTAINER_H