defines.h
Go to the documentation of this file.
1 /* *****************************************************************************
2 
3  trimAl v2.0: a tool for automated alignment trimming in large-scale
4  phylogenetics analyses.
5 
6  readAl v2.0: a tool for automated alignment conversion among different
7  formats.
8 
9  2009-2019
10  Fernandez-Rodriguez V. (victor.fernandez@bsc.es)
11  Capella-Gutierrez S. (salvador.capella@bsc.es)
12  Gabaldon, T. (tgabaldon@crg.es)
13 
14  This file is part of trimAl/readAl.
15 
16  trimAl/readAl are free software: you can redistribute it and/or modify
17  it under the terms of the GNU General Public License as published by
18  the Free Software Foundation, the last available version.
19 
20  trimAl/readAl are distributed in the hope that it will be useful,
21  but WITHOUT ANY WARRANTY; without even the implied warranty of
22  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23  GNU General Public License for more details.
24 
25  You should have received a copy of the GNU General Public License
26  along with trimAl/readAl. If not, see <http://www.gnu.org/licenses/>.
27 
28 ***************************************************************************** */
29 
30 #ifndef DEFINES
31 #define DEFINES
32 
33 #define BUILD "2019-05-08"
34 #define VERSION "2"
35 #define REVISION "0"
36 #define AUTHORS "2009-2019. Víctor Fernández-Rodríguez, Salvador Capella-Gutierrez and Toni Gabaldón."
37 
38 #define GAPPYOUT 1
39 #define STRICT 2
40 
41 #define DELIMITERS " \t\n"
42 #define OTHDELIMITERS " \t\n,:"
43 #define OTH2DELIMITERS " \n,:;"
44 
45 #define HTMLBLOCKS 120
46 #define PHYLIPDISTANCE 10
47 
48  /**
49 \file defines.h
50 \enum SequenceTypes
51 \details
52 <b> Binary Tag Enum.</b> \n
53 <a href="http://www.alanzucconi.com/2015/07/26/enum-flags-and-bitwise-operators/" > Alan Zucconi </a> has a great explanation of these.\n\n
54 
55 This enum contains the tags needed to obtain sequence types by composition of its main elements.\n
56 
57 To obtain a composed alignment type you can bitwise OR the tags: ComposedTag = SequenceTypes::DNA | SequenceTypes::DEG\n
58 You can Fuzzy and Exact check both simple and composed tags\n\n
59 
60 To \b FUZZY check an alignment type you can: \n
61  alig -> getAlignmentType() & SequenceTypes::DNA\n
62  <i> This will return true if the alig type is DNA, ignoring the rest of tags.</i>\n\n
63  alig -> getAlignmentType() & (SequenceTypes::DNA | SequenceTypes::DEG)\n
64  <i> This will return true if the alig type is DNA Deg, ignoring the rest of tags.</i>\n\n
65 
66 To \b EXACT check an alignment type you can: \n
67  alig -> getAlignmentType() == SequenceTypes::DNA \n
68  <i> This will return true if the alig type is only DNA. DNA Deg would result in false</i>.\n\n
69  alig -> getAlignmentType() == (SequenceTypes::DNA | SequenceTypes::DEG) \n
70  <i> This will return true if the alig is type DNA Deg, additional tags (like SequenceTypes::DNA | SequenceTypes::RNA | SequenceTypes::DEG) would resut in false.</i>\n\n
71 */
73 {
74  // Not Defined Tag = 0
75  /// = 0
76  NotDefined = 0u,
77 
78  // DNA Tag = 2
79  /// 1 << 1 = 2
80  DNA = 1u << 1u,
81 
82  // RNA Tag = 4
83  /// 1 << 2 = 4
84  RNA = 1u << 2u,
85 
86  // AA Tag = 8
87  /// 1 << 3 = 8
88  AA = 1u << 3u,
89 
90  // Degraded Tag = 16
91  /// 1 << 4 = 16
92  DEG = 1u << 4u
93 };
94 
95 #endif
1 << 1 = 2
Definition: defines.h:80
1 << 2 = 4
Definition: defines.h:84
SequenceTypes
Definition: defines.h:72
= 0
Definition: defines.h:76
1 << 3 = 8
Definition: defines.h:88
1 << 4 = 16
Definition: defines.h:92