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 }