X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fvssolutiongenerator.cpp;h=5fd8e4dff2a10d0371227f9f76c136ef0d04ba4b;hb=d1eb133ab529cdae131be7b150209f03189248f3;hp=9f8a7ab9f936ed52aec9a5cb61166add543d0e4b;hpb=451ef4f33b5a57dcb56bd7cb671bed359ac86247;p=builder.git diff --git a/source/vssolutiongenerator.cpp b/source/vssolutiongenerator.cpp index 9f8a7ab..5fd8e4d 100644 --- a/source/vssolutiongenerator.cpp +++ b/source/vssolutiongenerator.cpp @@ -2,6 +2,7 @@ #include #include #include "builder.h" +#include "internaltask.h" #include "sourcepackage.h" #include "vcxprojectfile.h" #include "vssolutionfile.h" @@ -18,22 +19,20 @@ Target *VsSolutionGenerator::create_target(const vector &, const strin Task *VsSolutionGenerator::run(const Target &target) const { const VsSolutionFile &solution = dynamic_cast(target); - Worker *worker = new Worker(solution); - return new InternalTask(worker); + return new InternalTask([&solution]{ return _run(solution); }); } - -void VsSolutionGenerator::Worker::main() +bool VsSolutionGenerator::_run(const VsSolutionFile &solution) { - const SourcePackage &spkg = *target.get_package(); + const SourcePackage &spkg = *solution.get_package(); Builder &builder = spkg.get_builder(); - IO::BufferedFile out(target.get_path().str(), IO::M_WRITE); + IO::BufferedFile out(solution.get_path().str(), IO::M_WRITE); IO::print(out, "Microsoft Visual Studio Solution File, Format Version 12.00\n"); IO::print(out, "MinimumVisualStudioVersion = 10.0.40219.1\n"); vector projects; - for(const Target *t: target.get_dependencies()) + for(const Target *t: solution.get_dependencies()) if(const VcxProjectFile *project = dynamic_cast(t)) projects.push_back(project); @@ -66,5 +65,5 @@ void VsSolutionGenerator::Worker::main() IO::print(out, "\tEndGlobalSection\n"); IO::print(out, "EndGlobal\n"); - status = Task::SUCCESS; + return true; }