1 #pragma once
2 #include "../util/enum.h"
3 
4 namespace DP {
5 
6 	enum class Flags { NONE = 0, PARALLEL = 1, FULL_MATRIX = 2, SEMI_GLOBAL = 4 };
7 
8 	DEF_ENUM_FLAG_OPERATORS(Flags)
9 
10 }
11 
12 enum class HspValues : unsigned {
13 	NONE = 0,
14 	TRANSCRIPT = 1,
15 	QUERY_START = 1 << 1,
16 	QUERY_END = 1 << 2,
17 	TARGET_START = 1 << 3,
18 	TARGET_END = 1 << 4,
19 	IDENT = 1 << 5,
20 	LENGTH = 1 << 6,
21 	MISMATCHES = 1 << 7,
22 	GAP_OPENINGS = 1 << 8,
23 	GAPS = IDENT | LENGTH | MISMATCHES,
24 	QUERY_COORDS = QUERY_START | QUERY_END,
25 	TARGET_COORDS = TARGET_START | TARGET_END,
26 	COORDS = QUERY_COORDS | TARGET_COORDS
27 };
28 
DEF_ENUM_FLAG_OPERATORS(HspValues)29 DEF_ENUM_FLAG_OPERATORS(HspValues)
30 
31 static inline bool have_coords(const HspValues v) {
32 	return flag_any(v, HspValues::TRANSCRIPT) || flag_all(v, HspValues::QUERY_COORDS | HspValues::TARGET_COORDS);
33 }