]> git.tdb.fi Git - builder.git/blob - source/condition.h
Refactor code to get rid of class PackageRef
[builder.git] / source / condition.h
1 /* $Id$
2
3 This file is part of builder
4 Copyright © 2006-2007 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
6 */
7
8 #ifndef CONDITION_H_
9 #define CONDITION_H_
10
11 #include <msp/datafile/loader.h>
12 #include "buildinfo.h"
13 #include "misc.h"
14
15 class Config;
16 class SourcePackage;
17
18 class Condition
19 {
20 public:
21         class Loader: public Msp::DataFile::Loader
22         {
23         public:
24                 Loader(Condition &);
25         private:
26                 Condition &cond;
27
28                 void require(const std::string &);
29                 void build_info();
30         };
31
32         Condition(SourcePackage &, const std::string &);
33         const StringList &get_requires() const { return requires; }
34         const BuildInfo  &get_build_info() const { return build_info; }
35         bool             eval();
36 private:
37         SourcePackage &pkg;
38         StringMap  expression;
39         StringList requires;
40         BuildInfo  build_info;
41 };
42 typedef std::list<Condition> ConditionList;
43
44 #endif