+#ifndef CONDITIONALLOADER_H_
+#define CONDITIONALLOADER_H_
+
+#include <string>
+#include <msp/datafile/loader.h>
+
+class Builder;
+class SourcePackage;
+
+class ArchitectureConditional: virtual public Msp::DataFile::Loader
+{
+private:
+ const Builder &builder;
+ std::string log_prefix;
+
+protected:
+ ArchitectureConditional(const Builder &, const std::string &);
+
+private:
+ void if_arch(const std::string &);
+};
+
+
+class FeatureConditional: virtual public Msp::DataFile::Loader
+{
+private:
+ const SourcePackage &package;
+ std::string log_prefix;
+
+protected:
+ FeatureConditional(const SourcePackage &, const std::string &);
+
+ void if_feature(const std::string &);
+};
+
+
+class ConditionalLoader: public ArchitectureConditional, FeatureConditional
+{
+protected:
+ ConditionalLoader(const SourcePackage &, const std::string &);
+};
+
+#endif