+#ifndef CONDITION_H_
+#define CONDITION_H_
+
+#include <msp/parser/loader.h>
+#include "buildinfo.h"
+#include "misc.h"
+#include "packageref.h"
+
+class Config;
+
+class Condition
+{
+public:
+ class Loader: public Msp::Parser::Loader
+ {
+ public:
+ Loader(Condition &);
+ private:
+ Condition &cond;
+
+ void require(const std::string &);
+ void build_info();
+ };
+
+ Condition(Package &, const std::string &);
+ const PkgRefList &get_requires() const { return requires; }
+ const BuildInfo &get_build_info() const { return build_info; }
+ void resolve_refs();
+ bool eval();
+private:
+ Package &pkg;
+ StringMap expression;
+ PkgRefList requires;
+ BuildInfo build_info;
+};
+typedef std::list<Condition> ConditionList;
+
+#endif