// webpireg.h
//
// Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
//

// Definition of MWebPlugInRegistry
//
//-----------------------------------------------------------------------------
// $Modtime:   24 Mar 1999 13:48:00  $  $Revision:   1.21  $  $Author:   davidh  $
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------

#if !defined(__WEBPIREG_H__)
#define __WEBPIREG_H__

//System includes

//Local includes
#if !defined(__WEBPIUTL_H__)
#include "webpiutl.h"	//For utility classes
#endif

//Forward declarations
class CWebPlugInData;

//-----------------------------------------------------------------------------

/* Class MWebPlugInRegistry
Interface defining all the functions the Plug In Registry
must implement in order to REGISTER the capabilities
of Plug Ins which are installed on the system.   */
class MWebPlugInRegistry
	{
public:
	enum TWebPlugInRegistryError
		{
		EPlugInRegistryOK = 0,
		EPlugInInUse,									//Plug In registration failed as a plugin DLL was in use
		EPlugInOlderThanCurrent,				//Plug In registration failed as a plugin DLL has been replaced by an older one (incremental builds only)
		EPlugInCorrupt,									//Unknown problem during registration
		EPlugInFileSystemProblem,				//Registration failed due to an error from the file system
		EPlugInRegistrationIncomplete,		//Not all plug ins were registered, but registry usable
		EPlugInNoCorePlugInsAvailable,		//No core plug in DLLS were found
		};


	virtual TWebPlugInRegistryError RegisterPIsL(CWebModel* aModel, TBool aForceRebuild = EFalse) =0;
	virtual TVersion RegistryVersion() const =0;
	virtual TInt NumPlugIns () const =0;
	virtual TInt NumPlugInDLLs () const =0;
	virtual const CWebPlugInDLLData* PlugInDLLData(TInt aPIDLLID) =0;
	virtual const TPlugInAllParams PlugInData(TInt aPIID) =0;
	virtual const TPlugInAllParams PlugInData(MWebPlugIn* aPtr) =0;
	virtual void SetEnabled(TBool aEnabled, TInt aPIID) =0;
	virtual void PlugInListL (CArrayFixFlat<TInt>* aArray) const =0;
	virtual void PlugInListL (CArrayFixFlat<TInt>* aArray, TWebPlugInType aPIType, const TDesC& aTarget) const =0;
	virtual void PlugInListL (CArrayFixFlat<TInt>* aArray, TWebPlugInType aPIType, const TDesC& aTarget, const TDesC& aMarkupLang, const TVersion& aMarkupLangVersion) const =0;
	virtual TInt RelatedUIPlugIn(TInt aEnginePIID) =0;

	
	IMPORT_C virtual void MWebPlugInRegistry_Reserved1();
	IMPORT_C virtual void MWebPlugInRegistry_Reserved2();

private:

	};

//-----------------------------------------------------------------------------



#endif  // !defined(__WEBPIREG_H__)