]> git.tdb.fi Git - builder.git/blobdiff - source/androidapplicationcomponent.cpp
Replace some sets with vectors as well
[builder.git] / source / androidapplicationcomponent.cpp
index 26277c8c02450fd8c75c065cc4f1e0a3ec090e0e..1aab7355009444a8e98c6c136b9232e633a9c90c 100644 (file)
@@ -1,4 +1,6 @@
+#include <msp/core/algorithm.h>
 #include <msp/fs/utils.h>
+#include <msp/strings/format.h>
 #include "androidapplicationcomponent.h"
 #include "androidmanifestfile.h"
 #include "androidresourcefile.h"
@@ -21,7 +23,7 @@ void AndroidApplicationComponent::create_targets() const
        Builder &builder = package.get_builder();
        BuildGraph &build_graph = builder.get_build_graph();
 
-       list<Target *> contents;
+       vector<Target *> contents;
        for(const auto &kvp: build_graph.get_targets())
                if(kvp.second->get_package()==&package)
                        if(InstalledFile *inst = dynamic_cast<InstalledFile *>(kvp.second))
@@ -32,7 +34,7 @@ void AndroidApplicationComponent::create_targets() const
        for(const string &p: permissions)
                manifest->add_permission(p);
 
-       list<Target *> resource_sources;
+       vector<Target *> resource_sources;
        resource_sources.push_back(manifest);
 
        const Toolchain &toolchain = builder.get_toolchain();
@@ -46,11 +48,12 @@ void AndroidApplicationComponent::create_targets() const
        Tool &aapt = toolchain.get_tool("AAPT");
        Target *resource_bundle = aapt.create_target(resource_sources);
 
-       list<Target *> apk_sources;
+       vector<Target *> apk_sources;
+       apk_sources.reserve(1+contents.size());
        apk_sources.push_back(resource_bundle);
 
        const Architecture &arch = package.get_builder().get_current_arch();
-       string lib_dir = "//"+name+"/lib/";
+       string lib_dir = format("//%s/lib/", name);
        if(arch.get_type()=="arm")
        {
                lib_dir += "armeabi";
@@ -60,7 +63,7 @@ void AndroidApplicationComponent::create_targets() const
        else
                lib_dir += arch.get_type();
 
-       string assets_dir = "//"+name+"/assets";
+       string assets_dir = format("//%s/assets", name);
        for(Target *t: contents)
        {
                Target *staged = 0;
@@ -89,5 +92,6 @@ AndroidApplicationComponent::Loader::Loader(AndroidApplicationComponent &c):
 
 void AndroidApplicationComponent::Loader::permission(const string &perm)
 {
-       obj.permissions.insert(perm);
+       if(!any_equals(obj.permissions, perm))
+               obj.permissions.push_back(perm);
 }