]> git.stg.codes - stg.git/blobdiff - projects/stargazer/store_loader.h
Stargazer (#6)
[stg.git] / projects / stargazer / store_loader.h
index c7911eead81adc97044f0b06cf45f42fd89cb00c..c187b540670658e63aeda62deed9263bbe4e1744 100644 (file)
  *    Author : Maxim Mamontov <faust@stargazer.dp.ua>
  */
 
-/*
- $Revision: 1.3 $
- $Date: 2010/03/04 12:24:19 $
- $Author: faust $
- */
-
-/*
- *  Header file for RAII store plugin loader
- */
+#pragma once
 
-#ifndef __STORE_LOADER_H__
-#define __STORE_LOADER_H__
+#include "stg/module_settings.h"
 
 #include <string>
 
-#include "stg/module_settings.h"
-#include "stg/noncopyable.h"
+namespace STG
+{
+
+struct Store;
+class SettingsImpl;
+
+class StoreLoader {
+    public:
+        explicit StoreLoader(const SettingsImpl& settings) noexcept;
+        ~StoreLoader();
 
-class STORE;
-class SETTINGS_IMPL;
+        StoreLoader(const StoreLoader&) = delete;
+        StoreLoader& operator=(const StoreLoader&) = delete;
 
-class STORE_LOADER : private NONCOPYABLE {
-public:
-    STORE_LOADER(const SETTINGS_IMPL & 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
+}