text: /**********************************************************************
  
    Audacity: A Digital Audio Editor
  
    LoadCommands.h
  
    Dominic Mazzoni
    James Crook
  
  **********************************************************************/
  
  #include "audacity/ModuleInterface.h"
  
  #include "../MemoryX.h"
  
  class AudacityCommand;
  
  ///////////////////////////////////////////////////////////////////////////////
  //
  // BuiltinCommandsModule
  //
  ///////////////////////////////////////////////////////////////////////////////
  
  class BuiltinCommandsModule final : public ModuleInterface
  {
  public:
     BuiltinCommandsModule(ModuleManagerInterface *moduleManager, const wxString *path);
     virtual ~BuiltinCommandsModule();
  
     // ComponentInterface implementation
  
     PluginPath GetPath() override;
     ComponentInterfaceSymbol GetSymbol() override;
     VendorSymbol GetVendor() override;
     wxString GetVersion() override;
     TranslatableString GetDescription() override;
  
     // ModuleInterface implementation
  
     bool Initialize() override;
     void Terminate() override;
     EffectFamilySymbol GetOptionalFamilySymbol() override;
  
     const FileExtensions &GetFileExtensions() override;
     FilePath InstallPath() override { return {}; }
  
     bool AutoRegisterPlugins(PluginManagerInterface & pm) override;
     PluginPaths FindPluginPaths(PluginManagerInterface & pm) override;
     unsigned DiscoverPluginsAtPath(
        const PluginPath & path, TranslatableString &errMsg,
        const RegistrationCallback &callback)
           override;
  
     bool IsPluginValid(const PluginPath & path, bool bFast) override;
  
     ComponentInterface *CreateInstance(const PluginPath & path) override;
     void DeleteInstance(ComponentInterface *instance) override;
  
  private:
     // BuiltinEffectModule implementation
  
     std::unique_ptr<AudacityCommand> Instantiate(const PluginPath & path);
  
  private:
     ModuleManagerInterface *mModMan;
     wxString mPath;
  
     PluginPaths mNames;
  };
  