ADAPT / lib / include / analysis.h
analysis.h
Raw
#include <pthread.h>

#ifndef ANALYSIS_H
#define ANALYSIS_H


enum ANALYSIS_STATUS {ANALYSIS_STARTED,ANALYSIS_RUNNING, ANALYSIS_DONE, ANALYSIS_STATUS_UNDEF};

struct analysis;
struct analyzer;

typedef void (*analysis_run)(struct analysis *a);
typedef void (*analysis_done)(struct analysis *a);

struct analysis
{
    pthread_mutex_t lock;
    void *ctx;
    void *res;
    enum ANALYSIS_STATUS status;
    
    //pointer to the analyzer
    struct analyzer *az;

    //function pointer interface
    analysis_run run;
    analysis_done done;
};

//high level interface
void init_analysis(struct analysis *ana, analysis_run run, analysis_done done, void *ctx);
void run_analysis(struct analysis *ana);
void destroy_analysis(struct analysis *ana);

//safe accessors
void *analysis_get_ctx(struct analysis *ana);
void analysis_set_status(struct analysis *ana, enum ANALYSIS_STATUS status);
enum ANALYSIS_STATUS analysis_get_status(struct analysis *ana);
struct analyzer *analysis_get_analyzer(struct analysis *ana);
void analysis_set_analyzer(struct analysis *ana, struct analyzer *az);
void *analysis_get_result(struct analysis *ana);


#endif