Inter4ql  5.2
ModuleGeneric.h
1 #ifndef __MODULEGENERIC_H__
2 #define __MODULEGENERIC_H__
3 
4 #include "Constraints.h"
5 #include "Types.h"
6 
7 #include <string>
8 #include <vector>
9 
10 namespace Inter4ql {
11 
12  class Fact;
13  class Relation;
14  class Rule;
15  class Result;
16  class Domain;
17  class Expression;
18  class Constraints;
21  class ModuleGeneric {
22  public:
26  database_to_add = new database();
27  database_to_remove = new database();
28  }
31  virtual ~ModuleGeneric() {
32  // TODO: memory leak!
33  //delete database_to_add;
34  //delete database_to_remove;
35  };
41  virtual Relation *get_relation(std::string s) const {}
46  virtual std::string get_name() const {}
51  virtual std::string print() {}
56  virtual std::vector<Relation*> *get_relations() const {}
61  virtual module_type::type get_module_type() const {}
65  virtual void reason() = 0;
70  virtual void reason_with_rules(std::vector<Rule*>* rules) {};
76  virtual Result ask_for_result(Fact * term) const = 0;
82  virtual Result evaluate_expression(Expression* expr) const;
88  virtual Result evaluate_expression_bf(Expression* expr) const;
94  virtual std::vector<std::string> get_references(Fact * term);
99  virtual void set_modules(std::vector<ModuleGeneric *> *_modules) {}
104  virtual Constraints* get_constraints() const { return nullptr; }
109  virtual std::vector<Domain*> *get_domains() const { return nullptr; };
114  virtual bool contains_domain(Domain* d) const;
119  virtual bool contains_relation(Relation* d) const;
124  virtual void set_disable_constraints(bool value) const {};
131  virtual bool check_constraints_local(bool check_rigid, bool check_flexible) const { return true; };
136  virtual database* get_wsm_database() { return nullptr; }
141  virtual database* get_add_database() { return database_to_add; };
146  virtual database* get_remove_database() { return database_to_remove; };
151  virtual void set_add_database(database* db) { database_to_add = db; };
156  virtual void set_remove_database(database* db) { database_to_remove = db; };
161  virtual bool constraints_violated() { return false; };
162 
163  protected:
164  // below databases are used for planning only
165  Inter4ql::database* database_to_add;
166  Inter4ql::database* database_to_remove;
167  };
168 }
169 
170 #endif
virtual std::string get_name() const
getter for a name of module
Definition: ModuleGeneric.h:46
virtual Result evaluate_expression(Expression *expr) const
provides valuations matching given Expression
Definition: ModuleGeneric.cc:20
virtual std::vector< Relation * > * get_relations() const
getter for module relations
Definition: ModuleGeneric.h:56
virtual void set_add_database(database *db)
overrides a database of facts which were added by actions to this module
Definition: ModuleGeneric.h:151
virtual void reason_with_rules(std::vector< Rule *> *rules)
performs reasing with additional Rules added
Definition: ModuleGeneric.h:70
ModuleGeneric()
default constructor
Definition: ModuleGeneric.h:25
virtual void set_modules(std::vector< ModuleGeneric *> *_modules)
setter for modules needed in this module
Definition: ModuleGeneric.h:99
class that implements a fact
Definition: Fact.h:14
virtual module_type::type get_module_type() const
getter for module type
Definition: ModuleGeneric.h:61
virtual database * get_remove_database()
fetches a database of facts which were removed by actions from this module
Definition: ModuleGeneric.h:146
Definition: Expression.h:10
virtual Result evaluate_expression_bf(Expression *expr) const
provides bel-free valuations matching given Expression
Definition: ModuleGeneric.cc:15
virtual bool contains_domain(Domain *d) const
check if module contains domain
Definition: ModuleGeneric.cc:111
virtual ~ModuleGeneric()
default destructor
Definition: ModuleGeneric.h:31
Definition: Result.h:16
Definition: Application.cc:37
virtual Constraints * get_constraints() const
getter for constraints
Definition: ModuleGeneric.h:104
Domain class - class that points to a data type.
Definition: Domain.h:12
Generic class of module (only virtual methods)
Definition: ModuleGeneric.h:21
virtual void set_remove_database(database *db)
overrides a database of facts which were removed by actions from this module
Definition: ModuleGeneric.h:156
virtual Relation * get_relation(std::string s) const
getter for a relation
Definition: ModuleGeneric.h:41
virtual std::string print()
function that returns string with module information
Definition: ModuleGeneric.h:51
virtual bool contains_relation(Relation *d) const
check if module contains relation (ignoring module name)
Definition: ModuleGeneric.cc:123
virtual database * get_wsm_database()
fetches a database of facts from well-supported model (for summing purposes)
Definition: ModuleGeneric.h:136
virtual std::vector< std::string > get_references(Fact *term)
provides a list of Module references is term (useful when e.g. term is a shadowed Bel) ...
Definition: ModuleGeneric.cc:107
Output class handles standard output of interpreter.
Definition: Constraints.h:68
virtual std::vector< Domain * > * get_domains() const
getter for domains
Definition: ModuleGeneric.h:109
virtual bool check_constraints_local(bool check_rigid, bool check_flexible) const
evaluates constraints locally, in current module
Definition: ModuleGeneric.h:131
virtual database * get_add_database()
fetches a database of facts which were added by actions to this module
Definition: ModuleGeneric.h:141
virtual void set_disable_constraints(bool value) const
allows for disabling constraints check
Definition: ModuleGeneric.h:124
virtual void reason()=0
performs reasoning
virtual bool constraints_violated()
checks whether constraints are violated
Definition: ModuleGeneric.h:161
virtual Result ask_for_result(Fact *term) const =0
provides valuations matching given Fact
class that handles relation instance inside modules
Definition: Relation.h:13