struct CCL::IPlugInManager

Overview

#include <ipluginmanager.h>

struct IPlugInManager: public CCL::IClassAllocator
{
    // methods

    virtual int CCL_API scanFolder (
        UrlRef url,
        StringID type,
        int options = PlugScanOption::kRecursive,
        IProgressNotify* progress = nullptr,
        IUrlFilter* filter = nullptr
    ) = 0;

    virtual int CCL_API scanFolder (
        UrlRef url,
        ICodeResourceLoader* loader,
        int options = PlugScanOption::kRecursive,
        IProgressNotify* progress = nullptr,
        IUrlFilter* filter = nullptr
    ) = 0;

    virtual tresult CCL_API unregisterLoader (ICodeResourceLoader* loader) = 0;
    virtual tresult CCL_API registerFactory (IClassFactory* factory) = 0;
    virtual tresult CCL_API unregisterFactory (IClassFactory* factory) = 0;
    virtual tresult CCL_API updateFactory (IClassFactory* factory) = 0;

    virtual tresult CCL_API storeFile (
        IAttributeList& classData,
        UrlRef url,
        ICodeResourceLoader* loader,
        StringID language,
        IObjectFilter* classFilter = nullptr
    ) = 0;

    virtual tresult CCL_API restoreFile (
        UrlRef url,
        ICodeResourceLoader* loader,
        int options = 0,
        IAttributeList* classData = nullptr,
        IObjectFilter* classFilter = nullptr,
        tbool* fileIsOnBlocklist = nullptr
    ) = 0;

    virtual tbool CCL_API isDiscardable (UrlRef url) = 0;
    virtual const IPlugInClassList&CCL_API getClassList (StringRef category) = 0;
    virtual const IClassDescription*CCL_API getClassDescription (UIDRef cid) = 0;
    virtual const IClassDescription*CCL_API getClassDescription (StringRef className) = 0;
    virtual const IClassDescription*CCL_API getClassDescription (UrlRef url) = 0;
    virtual const IClassDescription*CCL_API getMetaClassDescription (UIDRef cid) = 0;
    virtual const IClassDescription*CCL_API getAlternativeClass (UIDRef cid) = 0;
    virtual ISearcher*CCL_API createSearcher (ISearchDescription& description) = 0;

    virtual tresult CCL_API createInstance (
        StringRef className,
        UIDRef iid,
        void** obj
    ) = 0;

    virtual void CCL_API releaseInstance (IUnknown* obj) = 0;
    virtual const IClassDescription*CCL_API getInstanceClass (IUnknown* obj) = 0;
    virtual IPluginMetaClass*CCL_API createMetaClass (UIDRef cid) = 0;

    virtual tresult CCL_API registerStubClass (
        UIDRef iid,
        StringID name,
        StubConstructor constructor
    ) = 0;

    virtual tresult CCL_API unregisterStubClass (
        UIDRef iid,
        StubConstructor constructor
    ) = 0;

    virtual tresult CCL_API createStubInstance (
        UIDRef iid,
        IObject* object,
        void** stub
    ) = 0;

    virtual void CCL_API addHook (IUnknown* unknown) = 0;
    virtual void CCL_API removeHook (IUnknown* unknown) = 0;
    virtual tbool CCL_API enableBlocklist (tbool state) = 0;
    virtual void CCL_API resetBlocklist () = 0;
    virtual tresult CCL_API addToBlocklist (UrlRef url) = 0;
    virtual tresult CCL_API removeFromBlocklist (UrlRef url) = 0;
    virtual void CCL_API getBlocklistContent (IUnknownList& blocklist) = 0;
    virtual void CCL_API saveSettings () = 0;
    virtual void CCL_API removeSettings (tbool anyLanguage = true) = 0;
    virtual tbool CCL_API getCurrentFolder (IUrl& currentFolder) = 0;
    virtual void CCL_API setCurrentFolder (const IUrl* currentFolder) = 0;
    virtual tresult CCL_API storeFileList (ICodeResourceLoader* loader) = 0;

    virtual tresult CCL_API restoreFileList (
        ICodeResourceLoader* loader,
        int options = 0
    ) = 0;

    virtual tresult CCL_API getLastModifiedTime (DateTime& lastModified, UrlRef url) = 0;

    virtual tresult CCL_API setClassAttribute (
        const IClassDescription& description,
        StringID id,
        VariantRef value
    ) = 0;

    virtual tresult CCL_API unloadUnusedModules () = 0;
    virtual void CCL_API terminate () = 0;
    virtual tresult CCL_API createInstance (UIDRef cid, UIDRef iid, void** obj);
};

Inherited Members

public:
    // methods

    virtual tresult CCL_API queryInterface (UIDRef iid, void** ptr) = 0;
    virtual unsigned int CCL_API retain () = 0;
    virtual unsigned int CCL_API release () = 0;
    virtual tresult CCL_API createInstance (UIDRef cid, UIDRef iid, void** obj) = 0;

Detailed Documentation

Methods

virtual int CCL_API scanFolder (
    UrlRef url,
    StringID type,
    int options = PlugScanOption::kRecursive,
    IProgressNotify* progress = nullptr,
    IUrlFilter* filter = nullptr
) = 0

Scan folder for plug-ins (built-in loader).

virtual int CCL_API scanFolder (
    UrlRef url,
    ICodeResourceLoader* loader,
    int options = PlugScanOption::kRecursive,
    IProgressNotify* progress = nullptr,
    IUrlFilter* filter = nullptr
) = 0

Scan folder for plug-ins (custom loader).

virtual tresult CCL_API unregisterLoader (ICodeResourceLoader* loader) = 0

Unregister classes of given loader.

virtual tresult CCL_API registerFactory (IClassFactory* factory) = 0

Register class factory at runtime.

virtual tresult CCL_API unregisterFactory (IClassFactory* factory) = 0

Unregister class factory at runtime.

virtual tresult CCL_API updateFactory (IClassFactory* factory) = 0

Update class factory at runtime.

virtual tresult CCL_API storeFile (
    IAttributeList& classData,
    UrlRef url,
    ICodeResourceLoader* loader,
    StringID language,
    IObjectFilter* classFilter = nullptr
) = 0

Store class information of given file.

virtual tresult CCL_API restoreFile (
    UrlRef url,
    ICodeResourceLoader* loader,
    int options = 0,
    IAttributeList* classData = nullptr,
    IObjectFilter* classFilter = nullptr,
    tbool* fileIsOnBlocklist = nullptr
) = 0

Restore class information of given file.

virtual tbool CCL_API isDiscardable (UrlRef url) = 0

Check if class information of given file is discardable.

virtual const IPlugInClassList&CCL_API getClassList (StringRef category) = 0

Get class category.

virtual const IClassDescription*CCL_API getClassDescription (UIDRef cid) = 0

Get description by class identifier.

virtual const IClassDescription*CCL_API getClassDescription (StringRef className) = 0

Get description by class name (“Category:SubCategory:Name”).

virtual const IClassDescription*CCL_API getClassDescription (UrlRef url) = 0

Get description by class URL.

virtual const IClassDescription*CCL_API getMetaClassDescription (UIDRef cid) = 0

Get description of associated meta class (optional).

virtual const IClassDescription*CCL_API getAlternativeClass (UIDRef cid) = 0

Try to resolve class identifier to alternative class.

virtual ISearcher*CCL_API createSearcher (ISearchDescription& description) = 0

Create searcher for plug-in classes.

virtual tresult CCL_API createInstance (
    StringRef className,
    UIDRef iid,
    void** obj
) = 0

Create instance by class name (“Category:SubCategory:Name”).

virtual void CCL_API releaseInstance (IUnknown* obj) = 0

Release class instance.

virtual const IClassDescription*CCL_API getInstanceClass (IUnknown* obj) = 0

Get class of existing instance.

For package information, class description can be queried for ICodeResource. Please note that package information is not available for classes registered at runtime via registerFactory().

virtual IPluginMetaClass*CCL_API createMetaClass (UIDRef cid) = 0

Create meta class of given class (optional).

virtual tresult CCL_API registerStubClass (
    UIDRef iid,
    StringID name,
    StubConstructor constructor
) = 0

Register stub class for given interface.

virtual tresult CCL_API unregisterStubClass (
    UIDRef iid,
    StubConstructor constructor
) = 0

Unregister stub class for given interface.

virtual tresult CCL_API createStubInstance (
    UIDRef iid,
    IObject* object,
    void** stub
) = 0

Create stub class instance with given interface for an IObject.

virtual void CCL_API addHook (IUnknown* unknown) = 0

Install hook (ICodeResourceLoaderHook or IObjectFilter).

virtual void CCL_API removeHook (IUnknown* unknown) = 0

Uninstall hook.

virtual tbool CCL_API enableBlocklist (tbool state) = 0

Enable/disable blocklist, returns previous state.

virtual void CCL_API resetBlocklist () = 0

Reset blocklist.

virtual tresult CCL_API addToBlocklist (UrlRef url) = 0

Add file to blocklist.

virtual tresult CCL_API removeFromBlocklist (UrlRef url) = 0

Remove file from blocklist.

virtual void CCL_API getBlocklistContent (IUnknownList& blocklist) = 0

Get content of blocklist.

virtual void CCL_API saveSettings () = 0

Save class settings.

virtual void CCL_API removeSettings (tbool anyLanguage = true) = 0

Remove all cached class settings.

virtual tbool CCL_API getCurrentFolder (IUrl& currentFolder) = 0

Get folder currently being scanned.

virtual void CCL_API setCurrentFolder (const IUrl* currentFolder) = 0

Set (or reset) folder currently being scanned.

virtual tresult CCL_API storeFileList (ICodeResourceLoader* loader) = 0

Store list of files handled by given loader.

virtual tresult CCL_API restoreFileList (
    ICodeResourceLoader* loader,
    int options = 0
) = 0

Restore files handled by given loader.

virtual tresult CCL_API getLastModifiedTime (DateTime& lastModified, UrlRef url) = 0

Get the modification date of a module that corresponds to a given module URL.

virtual tresult CCL_API setClassAttribute (
    const IClassDescription& description,
    StringID id,
    VariantRef value
) = 0

Set attribute for registered class.

virtual tresult CCL_API unloadUnusedModules () = 0

Unload unused modules immediately.

virtual void CCL_API terminate () = 0

Unload all modules and cleanup.

virtual tresult CCL_API createInstance (UIDRef cid, UIDRef iid, void** obj)

Create new class instance.