Inter4ql  5.2
ModuleAction.h
1 #ifndef __MODULE_ACTION_H__
2 #define __MODULE_ACTION_H__
3 
4 #include <vector>
5 #include <string>
6 
7 #include "Types.h"
8 #include "Functions.h"
9 #include "Rule.h"
10 #include "ModuleGeneric.h"
11 
12 namespace Inter4ql {
13 
14  class Result;
15  class Rule;
16  class Fact;
17  class Value;
18 
21  class ModuleAction : public ModuleGeneric {
22  public:
29  ModuleAction(std::string _name,
30  std::vector<Value*>* _args,
31  Expression* _preconditions,
32  std::vector<Rule*>* _add,
33  std::vector<Rule*>* _remove,
34  Expression* composite_expr);
38  ~ModuleAction();
39 
40  std::string get_name() const;
41  std::string print();
42  module_type::type get_module_type() const;
43 
44  std::vector<Value*>* get_args();
45  Expression* get_preconditions();
46  Expression* get_composite_expr();
47  std::vector<Rule*>* get_add_rules();
48  std::vector<Rule*>* get_remove_rules();
49 
50  bool is_composite();
51 
52  void reason();
53  Result ask_for_result(Fact * term) const;
54 
59  void set_modules(std::vector<ModuleGeneric *> *_modules) override;
60 
61  private:
62  std::vector<Value*>* args;
63  Expression* preconditions;
64  std::vector<Rule*>* add;
65  std::vector<Rule*>* remove;
66  std::string name;
67  std::vector<ModuleGeneric *> *modules;
68  Expression* composite_expr;
69 
70  std::vector<ModuleGeneric *> *runnable_module_list;
71  };
72 }
73 
74 #endif /* __MODULE_ACTION_H__ */
75 
std::string print()
function that returns string with module information
Definition: ModuleAction.cc:29
class that implements a fact
Definition: Fact.h:14
Implementation of ModuleAction for modules with reasoning.
Definition: ModuleAction.h:21
std::string get_name() const
getter for a name of module
Definition: ModuleAction.cc:25
Definition: Expression.h:10
Definition: Result.h:16
Definition: Application.cc:37
Generic class of module (only virtual methods)
Definition: ModuleGeneric.h:21
void set_modules(std::vector< ModuleGeneric *> *_modules) override
setter for modules needed in this module
Definition: ModuleAction.cc:86
void reason()
performs reasoning
Definition: ModuleAction.cc:67
ModuleAction(std::string _name, std::vector< Value *> *_args, Expression *_preconditions, std::vector< Rule *> *_add, std::vector< Rule *> *_remove, Expression *composite_expr)
constructor
Definition: ModuleAction.cc:6
module_type::type get_module_type() const
getter for module type
Definition: ModuleAction.cc:63
Result ask_for_result(Fact *term) const
provides valuations matching given Fact
Definition: ModuleAction.cc:72
~ModuleAction()
destructor
Definition: ModuleAction.cc:22