Inter4ql  5.2
ModuleGroup.h
1 #ifndef __MODULEGROUP_H__
2 #define __MODULEGROUP_H__
3 
4 #include <vector>
5 #include <string>
6 
7 #include "ModuleGeneric.h"
8 #include "Types.h"
9 
10 namespace Inter4ql {
11 
12  class Rule;
13  class Domain;
14  class Result;
15  class Relation;
16  class Fact;
17  class BooleanExpression;
20  class ModuleGroup : public ModuleGeneric {
21  public:
30  ModuleGroup(std::string a_name,
31  std::vector<Domain*> *_domains,
32  std::vector<Relation*> *_relations,
33  std::vector<std::string> *_members);
37  ~ModuleGroup();
38  Relation *get_relation(std::string s) const;
39  virtual std::vector<Domain*> *get_domains() const;
40  std::vector<Relation*> *get_relations() const;
41  std::vector<std::string> *get_members() const;
42  std::string get_name() const;
43  std::string print();
44  module_type::type get_module_type() const;
45  variable_type::type get_domain_type(std::string name);
46 
47  void add_domain(Domain *d);
48  void add_relation(Relation *r);
49 
50  void reason();
51  Result ask_for_result(Fact * term) const;
60  private:
61  Result ask_for_result_generic(Fact * term, Expression * expr) const;
62 
63  std::vector<Domain *> *domains;
64  std::vector<Domain *> *domainsToDelete;
65 
66  std::vector<Relation *> *relations;
67  std::vector<std::string> *members;
68  std::string name;
69  BooleanExpression * true_when;
70  BooleanExpression * false_when;
71  BooleanExpression * inconsistent_when;
72  };
73 }
74 
75 #endif /* __MODULEGROUP_H__ */
76 
Relation * get_relation(std::string s) const
getter for a relation
Definition: ModuleGroup.cc:78
virtual std::vector< Domain * > * get_domains() const
getter for domains
Definition: ModuleGroup.cc:93
class that implements a fact
Definition: Fact.h:14
ModuleGroup(std::string a_name, std::vector< Domain *> *_domains, std::vector< Relation *> *_relations, std::vector< std::string > *_members)
constructor
Definition: ModuleGroup.cc:19
Definition: Expression.h:10
void add_whens(BooleanExpression *t, BooleanExpression *f, BooleanExpression *i)
prepare formulas for merging group data
Definition: ModuleGroup.cc:226
Definition: Result.h:16
Definition: Application.cc:37
void reason()
performs reasoning
Definition: ModuleGroup.cc:126
Domain class - class that points to a data type.
Definition: Domain.h:12
Generic class of module (only virtual methods)
Definition: ModuleGeneric.h:21
std::vector< Relation * > * get_relations() const
getter for module relations
Definition: ModuleGroup.cc:85
~ModuleGroup()
destructor
Definition: ModuleGroup.cc:44
Implementation of ModuleGeneric for modules with reasoning.
Definition: ModuleGroup.h:20
Definition: BooleanExpression.h:8
module_type::type get_module_type() const
getter for module type
Definition: ModuleGroup.cc:112
Result evaluate_expression(Expression *expr) const
provides valuations matching given Expression
Definition: ModuleGroup.cc:222
std::string print()
function that returns string with module information
Definition: ModuleGroup.cc:101
std::string get_name() const
getter for a name of module
Definition: ModuleGroup.cc:97
type
Enumeration type for types of values.
Definition: Types.h:26
Result ask_for_result(Fact *term) const
provides valuations matching given Fact
Definition: ModuleGroup.cc:217
class that handles relation instance inside modules
Definition: Relation.h:13