]> git.tdb.fi Git - builder.git/commitdiff
Associate targets with FileTargets instead of paths
authorMikko Rasa <tdb@tdb.fi>
Mon, 9 Jan 2023 09:15:10 +0000 (11:15 +0200)
committerMikko Rasa <tdb@tdb.fi>
Mon, 9 Jan 2023 09:16:29 +0000 (11:16 +0200)
source/lib/filetarget.cpp
source/lib/task.cpp
source/lib/task.h

index f799f497895af8d2e5e0d2adc6988ea87a27b032..7ab13c3d5bf93833580a687982d7dd2acbdcc2ce 100644 (file)
@@ -147,7 +147,7 @@ string FileTarget::create_build_signature() const
 
 void FileTarget::build(Task &task)
 {
-       task.add_file(path);
+       task.add_target(*this);
        task.set_unlink(true);
 }
 
index e72a7415de285767ee93369051fb384113b8d2a1..870e068c76a9cab072c98eacfeff1b3450c76c19 100644 (file)
@@ -1,14 +1,15 @@
 #include <msp/fs/dir.h>
 #include <msp/fs/stat.h>
 #include <msp/fs/utils.h>
+#include "filetarget.h"
 #include "task.h"
 
 using namespace std;
 using namespace Msp;
 
-void Task::add_file(const FS::Path &f)
+void Task::add_target(const FileTarget &t)
 {
-       files.push_back(f);
+       targets.push_back(&t);
 }
 
 void Task::set_unlink(bool u)
@@ -18,8 +19,9 @@ void Task::set_unlink(bool u)
 
 void Task::prepare()
 {
-       for(const FS::Path &f: files)
+       for(const FileTarget *t: targets)
        {
+               const FS::Path &f = t->get_path();
                if(FS::exists(f))
                {
                        // If the file exists, the directory it's in must exist too
index b0f56f470399446d7339b1508300c2f0fd89e59f..3520a91ae04ab3fe584a873ec6e56123d7f8e8ae 100644 (file)
@@ -2,10 +2,12 @@
 #define TASK_H_
 
 #include <string>
+#include <vector>
 #include <sigc++/signal.h>
-#include <msp/fs/path.h>
 #include "libbuilder_api.h"
 
+class FileTarget;
+
 /**
 Tasks are used to manage other programs and worker threads involved in the
 build process.  They are run asynchronously by default, but a wait() method is
@@ -24,15 +26,15 @@ public:
        sigc::signal<void, bool> signal_finished;
 
 protected:
-       std::vector<Msp::FS::Path> files;
+       std::vector<const FileTarget *> targets;
        bool unlink = false;
 
        Task() = default;
 public:
        virtual ~Task() { }
 
-       /** Associate the task with a file. */
-       void add_file(const Msp::FS::Path &);
+       /** Associate the task with a target. */
+       void add_target(const FileTarget &);
 
        /** If set to true, the associated files are removed before the task is
        started. */