]> git.tdb.fi Git - builder.git/blobdiff - source/vcxprojectgenerator.cpp
Refactor InternalTask to take a functor
[builder.git] / source / vcxprojectgenerator.cpp
index 1528802eddc45e811cce4bc4fb8918644b24bc93..bafa8d94f42ee629d84454171be34514e4b603e5 100644 (file)
@@ -5,6 +5,7 @@
 #include "builder.h"
 #include "csourcefile.h"
 #include "executable.h"
+#include "internaltask.h"
 #include "sourcepackage.h"
 #include "vcxprojectfile.h"
 #include "vcxprojectgenerator.h"
@@ -20,17 +21,15 @@ Target *VcxProjectGenerator::create_target(const vector<Target *> &, const strin
 Task *VcxProjectGenerator::run(const Target &target) const
 {
        const VcxProjectFile &project = dynamic_cast<const VcxProjectFile &>(target);
-       Worker *worker = new Worker(project);
-       return new InternalTask(worker);
+       return new InternalTask([&project]{ return _run(project); });
 }
 
-
-void VcxProjectGenerator::Worker::main()
+bool VcxProjectGenerator::_run(const VcxProjectFile &project)
 {
-       const SourcePackage &spkg = *target.get_package();
+       const SourcePackage &spkg = *project.get_package();
        Builder &builder = spkg.get_builder();
 
-       IO::BufferedFile out(target.get_path().str(), IO::M_WRITE);
+       IO::BufferedFile out(project.get_path().str(), IO::M_WRITE);
        IO::print(out, "<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n");
 
        IO::print(out, "\t<ItemGroup Label=\"ProjectConfigurations\">\n");
@@ -49,7 +48,7 @@ void VcxProjectGenerator::Worker::main()
        IO::print(out, "\t<PropertyGroup Label=\"Globals\">\n");
        IO::print(out, "\t\t<VCProjectVersion>15.0</VCProjectVersion>\n");
        IO::print(out, "\t\t<Keyword>MakeFileProj</Keyword>\n");
-       IO::print(out, "\t\t<ProjectGuid>{%s}</ProjectGuid>\n", target.get_guid());
+       IO::print(out, "\t\t<ProjectGuid>{%s}</ProjectGuid>\n", project.get_guid());
        IO::print(out, "\t</PropertyGroup>\n");
 
        IO::print(out, "\t<Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.Default.props\" />\n");
@@ -134,5 +133,5 @@ void VcxProjectGenerator::Worker::main()
        IO::print(out, "\t<Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.targets\" />\n");
        IO::print(out, "</Project>\n");
 
-       status = Task::SUCCESS;
+       return true;
 }