#include "knowledge_base.h"
#include "analysis.h"
#ifndef ANALYZER_H
#define ANALYZER_H
struct mape_k;
typedef void *(*strategy_sel_fn)(struct knowledge_base *k_b);
#define NUM_ANALYSES_INIT 4
struct analyzer
{
//analysis handles
struct analysis **analyses;
size_t num_analyses;
size_t max_analyses;
//Strategy Selector
strategy_sel_fn strategy_sel;
/* Only make the pointer known */
struct mape_k *mape_k;
};
void init_analyzer(struct analyzer *ana, struct mape_k *mape_k, strategy_sel_fn strategy_sel);
void analyzer_add_analysis(struct analyzer *ana, struct analysis *a);
void analyzer_rem_analysis(struct analyzer *ana, struct analysis *a);
bool analyzer_all_analyses_done(struct analyzer *ana);
void run_analyzer(struct analyzer *ana);
void destroy_analyzer(struct analyzer *ana);
#endif