]> git.tdb.fi Git - builder.git/blobdiff - source/lib/builder.h
Add an interface for dynamically loaded plugins
[builder.git] / source / lib / builder.h
index e06cec34e73c6efbea21f1dee7a5839d15ef7e96..32d06a0be62f1d0515cdd30bf9538795bdd9277a 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <map>
 #include <string>
+#include <msp/core/module.h>
 #include <msp/datafile/loader.h>
 #include <msp/fs/path.h>
 #include "architecture.h"
@@ -17,6 +18,7 @@
 
 class FileTarget;
 class Package;
+class Plugin;
 class SourcePackage;
 
 /**
@@ -44,6 +46,18 @@ private:
        };
 
 private:
+       struct LoadedPlugin
+       {
+               Msp::FS::Path path;
+               Msp::Module *module = nullptr;
+               Plugin *plugin = nullptr;
+
+               LoadedPlugin() = default;
+               LoadedPlugin(LoadedPlugin &&);
+               ~LoadedPlugin();
+       };
+
+       std::vector<LoadedPlugin> plugins;
        PackageManager package_manager;
 
        Architecture native_arch;
@@ -66,6 +80,7 @@ public:
        Builder();
        ~Builder();
 
+       void load_plugins();
        PackageManager &get_package_manager() { return package_manager; }
 
        void set_architecture(const std::string &);