home *** CD-ROM | disk | FTP | other *** search
- /*---------------------------------------------------------------
-
- CPlugin.h
-
- A wrapper class for a plugin.
-
- Provides an easy way to managed loading an unloading.
-
- ---------------------------------------------------------------*/
-
- #pragma once
-
- #include "CodeFragments.h"
- #include "IInterfaceProvider.h"
- #include "IPluginInfoIntf.h"
-
- typedef IInterfaceProvider* (*GetInterfaceProviderProc)();
-
- class CPlugin
- {
- public:
-
- CPlugin( FSSpec& inSpec);
- ~CPlugin();
-
- virtual OSErr Load( bool load = true);
- virtual OSErr Unload();
- virtual bool Valid();
-
- virtual bool IsLoaded() { return mIsLoaded; };
-
- virtual OSErr GetInterfacePointer( unsigned long inID, void** outInterfacePtr );
-
-
- protected:
- FSSpec mPluginSpec; // the FSSpec of the plugin file
- bool mIsLoaded;
- CFragConnectionID mConnID;
- GetInterfaceProviderProc mGetIntfProc;
- IInterfaceProvider* mIntfProvider;
-
- unsigned short mRefCount;
-
-
- };
-
-
- class PluginLoader
- {
- public:
-
- PluginLoader( CPlugin* inPlugin )
- {
- mPlugin = inPlugin;
- mPlugin->Load();
- };
-
- ~PluginLoader()
- {
- mPlugin->Unload();
- };
-
- private:
- CPlugin* mPlugin;
- };