X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fsourcepackage.cpp;h=40b098ca10931b4bf31651f80b7dcbb64beded83;hb=aa053d637e8259755af7d2e4b510a242f4d29c7b;hp=4d680ba9bd234e5d16e62ea76adda82bf8a89c2e;hpb=690b9c5f340504517cf6ba8aad0c168dcdff4efa;p=builder.git diff --git a/source/sourcepackage.cpp b/source/sourcepackage.cpp index 4d680ba..40b098c 100644 --- a/source/sourcepackage.cpp +++ b/source/sourcepackage.cpp @@ -167,23 +167,11 @@ void SourcePackage::save_caches() } -SourcePackage::Loader::Loader(SourcePackage &p): +SourcePackage::Loader::Loader(SourcePackage &p, const Config::InputOptions *o): DataFile::DerivedObjectLoader(p), - FeatureConditional(p, p.name) + FeatureConditional(p, p.name), + options(o) { - init(0); -} - -SourcePackage::Loader::Loader(SourcePackage &p, const Config::InputOptions &o): - DataFile::DerivedObjectLoader(p), - FeatureConditional(p, p.name) -{ - init(&o); -} - -void SourcePackage::Loader::init(const Config::InputOptions *o) -{ - options = o; add("android_application", &Loader::component); add("build_info", &Loader::build_info); add("datapack", &Loader::component); @@ -192,9 +180,9 @@ void SourcePackage::Loader::init(const Config::InputOptions *o) add("generate", &Loader::generate); add("install", &Loader::component); add("interface_version", &Loader::interface_version); - add("library", &Loader::component_arg); - add("module", &Loader::component_arg); - add("program", &Loader::component_arg); + add("library", &Loader::component_arg, BinaryComponent::LIBRARY); + add("module", &Loader::component_arg, BinaryComponent::MODULE); + add("program", &Loader::component_arg, BinaryComponent::PROGRAM); add("source_archive", &Loader::source_archive); add("source_tarball", &Loader::source_archive); add("tarball", &Loader::tarball); @@ -207,7 +195,10 @@ void SourcePackage::Loader::finish() other components wil be created first */ auto i = find(obj.components, obj.source_archive); if(i!=obj.components.end()) - obj.components.splice(obj.components.end(), obj.components, i); + { + obj.components.erase(i); + obj.components.push_back(obj.source_archive); + } } void SourcePackage::Loader::feature(const string &n, const string &d) @@ -234,8 +225,8 @@ void SourcePackage::Loader::component(const string &n) obj.components.push_back(comp); } -template -void SourcePackage::Loader::component_arg(const string &n) +template +void SourcePackage::Loader::component_arg(A a, const string &n) { C *comp = new C(obj, n, a); load_sub(*comp);