]> git.tdb.fi Git - builder.git/blobdiff - source/condition.h
Adjust requires to library changes
[builder.git] / source / condition.h
diff --git a/source/condition.h b/source/condition.h
new file mode 100644 (file)
index 0000000..f518aea
--- /dev/null
@@ -0,0 +1,38 @@
+#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