]> git.tdb.fi Git - builder.git/blobdiff - source/androidmanifestgenerator.cpp
Refactor InternalTask to take a functor
[builder.git] / source / androidmanifestgenerator.cpp
index a7cda0428dea4ce95954fbccd1cb2ca6ea347358..70b1e20754d06d2b72db97a070894b8a3c571c41 100644 (file)
@@ -3,17 +3,14 @@
 #include "androidmanifestfile.h"
 #include "androidmanifestgenerator.h"
 #include "component.h"
+#include "internaltask.h"
 #include "sharedlibrary.h"
 #include "sourcepackage.h"
 
 using namespace std;
 using namespace Msp;
 
-AndroidManifestGenerator::AndroidManifestGenerator(Builder &b):
-       Tool(b, "AMG")
-{ }
-
-Target *AndroidManifestGenerator::create_target(const list<Target *> &, const string &)
+Target *AndroidManifestGenerator::create_target(const vector<Target *> &, const string &)
 {
        throw logic_error("not implemented");
 }
@@ -21,16 +18,10 @@ Target *AndroidManifestGenerator::create_target(const list<Target *> &, const st
 Task *AndroidManifestGenerator::run(const Target &target) const
 {
        const AndroidManifestFile &manifest = dynamic_cast<const AndroidManifestFile &>(target);
-       Worker *worker = new Worker(manifest);
-       return new InternalTask(worker);
+       return new InternalTask([&manifest]{ return _run(manifest); });
 }
 
-
-AndroidManifestGenerator::Worker::Worker(const AndroidManifestFile &m):
-       manifest(m)
-{ }
-
-void AndroidManifestGenerator::Worker::main()
+bool AndroidManifestGenerator::_run(const AndroidManifestFile &manifest)
 {
        const Component &comp = *manifest.get_component();
        const SourcePackage &pkg = comp.get_package();
@@ -60,10 +51,9 @@ void AndroidManifestGenerator::Worker::main()
                out.write("\t\t</activity>\n");
        }
        out.write("\t</application>\n");
-       const set<string> &permissions = manifest.get_permissions();
-       for(set<string>::const_iterator i=permissions.begin(); i!=permissions.end(); ++i)
-               IO::print(out, "\t<uses-permission android:name=\"%s\" />\n", *i);
+       for(const string &p: manifest.get_permissions())
+               IO::print(out, "\t<uses-permission android:name=\"%s\" />\n", p);
        out.write("</manifest>\n");
 
-       status = Task::SUCCESS;
+       return true;
 }