Inter4ql  5.2
Application.h
1 #ifndef __APPLICATION_H__
2 #define __APPLICATION_H__
3 
4 #include <set>
5 
6 #include "VariableSpace.h"
7 #include "Parser.h"
8 #include "Output.h"
9 #include "Checker.h"
10 #include "Value.h"
11 
12 namespace Inter4ql {
13 
14  class ModuleGeneric;
15  class ExternalDeclaration;
16 
20  class Application {
21  public:
28  Application(std::istream *i = 0, std::ostream *o = 0, std::ostream *e = 0);
31  ~Application();
34  void start();
39  int parse_line();
44  Output *get_output();
49  void set_input(std::istream *i);
54  VariableSpace *public_get_vs() { return variable_space; };
59  ModuleGeneric *public_get_module(std::string v) { return get_module(v); };
64  std::vector<ModuleGeneric *> *public_get_modules() { return this->modules; };
69  std::vector<ModuleGeneric *> *public_get_actions() { return this->actions; };
70 
71  static Application* app_instance; // this could be replaced by passing Application pointer to modules
72 
73  bool debug_evaluation = false;
74  bool debug_planning = false;
75  bool debug_planning_composite = false;
76  bool debug_constraints = false;
77  bool debug_disposable = false;
78  bool debug_database = false;
79  bool debug_probing = false;
80  bool debug_warning = false;
81  private:
82  void add_to_variable_space(Program *p, VariableSpace* vs);
83  bool add_to_variable_space(Fact *r, VariableSpace* vs, std::vector<Relation*>* relations);
84 
85  int process_import(std::string filename);
86  void process_print(ModuleGeneric* module);
87  void process_modules();
88  void process_actions();
89  void process_problems();
90  void process_execute(ModuleGeneric* problem);
91  void process_rule(Expression* e);
92  void process_clear();
93  void process_help();
94  void process_debug(std::string module, bool value);
95 
96  ModuleGeneric *get_module(std::string v);
97  ModuleGeneric *get_problem(std::string v);
98  ModuleGeneric *get_action(std::string v);
99  ModuleGeneric *get_any(std::string v);
100  Relation *get_relation_by_module(std::string module, std::string name);
101  void print_module(ModuleGeneric *m);
102 
103  std::vector<ModuleGeneric *> *modules;
104  std::vector<ModuleGeneric *> *actions;
105  std::vector<ModuleGeneric *> *problems;
106  std::istream *input;
107  Output *output;
108  Checker *checker;
109  VariableSpace *variable_space;
110  };
111 }
112 
113 #endif /* __APPLICATION_H__ */
Checker class - class that validates 4QL programs.
Definition: Checker.h:29
VariableSpace class for handling all values in interpreter environment.
Definition: VariableSpace.h:13
class that implements a fact
Definition: Fact.h:14
Application class - class that merges all modules and creates interpreter.
Definition: Application.h:20
void set_input(std::istream *i)
setter for default input
Definition: Application.cc:661
Definition: Expression.h:10
Output * get_output()
getter for output module
Definition: Application.cc:667
ModuleGeneric * public_get_module(std::string v)
getter for single module from global modules list
Definition: Application.h:59
Definition: Application.cc:37
VariableSpace * public_get_vs()
getter for global variable space
Definition: Application.h:54
Generic class of module (only virtual methods)
Definition: ModuleGeneric.h:21
Application(std::istream *i=0, std::ostream *o=0, std::ostream *e=0)
constructor used to build program and set input and outputs
Definition: Application.cc:41
std::vector< ModuleGeneric * > * public_get_modules()
getter for all modules from global modules list
Definition: Application.h:64
Output class handles standard output of interpreter.
Definition: Output.h:12
std::vector< ModuleGeneric * > * public_get_actions()
getter for all actions from global action list
Definition: Application.h:69
int parse_line()
function that parses a line
Definition: Application.cc:173
void start()
main interpreter loop
Definition: Application.cc:94
class that handles 4QL programs
Definition: Program.h:13
~Application()
destructor
Definition: Application.cc:61
class that handles relation instance inside modules
Definition: Relation.h:13