X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/ede91934442fd804d7b818971a44e3ad795cb01f..a91e9542b384905187890f161d4da5396996fcfd:/projects/stargazer/store_loader.h?ds=sidebyside

diff --git a/projects/stargazer/store_loader.h b/projects/stargazer/store_loader.h
index 1f624e1a..c187b540 100644
--- a/projects/stargazer/store_loader.h
+++ b/projects/stargazer/store_loader.h
@@ -18,45 +18,40 @@
  *    Author : Maxim Mamontov <faust@stargazer.dp.ua>
  */
 
-/*
- $Revision: 1.3 $
- $Date: 2010/03/04 12:24:19 $
- $Author: faust $
- */
+#pragma once
 
-/*
- *  Header file for RAII store plugin loader
- */
-
-#ifndef __STORE_LOADER_H__
-#define __STORE_LOADER_H__
+#include "stg/module_settings.h"
 
 #include <string>
 
-#include "module_settings.h"
-#include "noncopyable.h"
+namespace STG
+{
+
+struct Store;
+class SettingsImpl;
+
+class StoreLoader {
+    public:
+        explicit StoreLoader(const SettingsImpl& settings) noexcept;
+        ~StoreLoader();
 
-class STORE;
-class SETTINGS;
+        StoreLoader(const StoreLoader&) = delete;
+        StoreLoader& operator=(const StoreLoader&) = delete;
 
-class STORE_LOADER : private NONCOPYABLE {
-public:
-    STORE_LOADER(const SETTINGS & settings);
-    ~STORE_LOADER();
+        bool load() noexcept;
+        bool unload() noexcept;
 
-    bool Load();
-    bool Unload();
+        Store& get() noexcept { return *plugin; }
 
-    STORE * GetStore() { return plugin; }
+        const std::string& GetStrError() const noexcept { return errorStr; }
 
-    const std::string & GetStrError() const { return errorStr; }
-private:
-    bool isLoaded;
-    void * handle;
-    STORE * plugin;
-    std::string errorStr;
-    MODULE_SETTINGS storeSettings;
-    std::string pluginFileName;
+    private:
+        bool isLoaded;
+        void* handle;
+        Store* plugin;
+        std::string errorStr;
+        ModuleSettings storeSettings;
+        std::string pluginFileName;
 };
 
-#endif
+}