#ifndef ALIGN_BENCHMARK_PARAMS_H_
#define ALIGN_BENCHMARK_PARAMS_H_
#include "utils/commons.h"
#include "benchmark/benchmark_utils.h"
typedef enum {
alignment_test,
alignment_indel_wavefront,
alignment_edit_bpm,
alignment_edit_dp,
alignment_edit_dp_banded,
alignment_edit_wavefront,
alignment_gap_linear_nw,
alignment_gap_linear_wavefront,
alignment_gap_affine_swg,
alignment_gap_affine_swg_endsfree,
alignment_gap_affine_swg_banded,
alignment_gap_affine_wavefront,
alignment_gap_affine2p_dp,
alignment_gap_affine2p_wavefront,
} alignment_algorithm_type;
typedef struct {
alignment_algorithm_type algorithm;
char *input_filename;
char *output_filename;
bool output_full;
FILE* input_file;
char* line1;
char* line2;
size_t line1_allocated;
size_t line2_allocated;
FILE* output_file;
linear_penalties_t linear_penalties;
affine_penalties_t affine_penalties;
affine2p_penalties_t affine2p_penalties;
bool align_span_global;
bool align_span_extension;
bool align_span_endsfree;
double pattern_begin_free;
double text_begin_free;
double pattern_end_free;
double text_end_free;
bool wfa_score_only;
wf_heuristic_strategy wfa_heuristic;
int wfa_heuristic_p1;
int wfa_heuristic_p2;
int wfa_heuristic_p3;
wavefront_memory_t wfa_memory_mode;
uint64_t wfa_max_memory;
int wfa_max_steps;
int wfa_max_threads;
bool wfa_lambda;
int bandwidth;
bool check_display;
bool check_correct;
bool check_score;
bool check_alignments;
int check_metric;
int check_bandwidth;
int plot;
profiler_timer_t timer_global;
int num_threads;
int batch_size;
int progress;
int verbose;
} align_bench_params_t;
extern align_bench_params_t parameters;
void usage();
void parse_arguments(
int argc,
char** argv);
#endif