1 // ========================================================================== 2 // SeqAn - The Library for Sequence Analysis 3 // ========================================================================== 4 // Copyright (c) 2006-2018, Knut Reinert, FU Berlin 5 // All rights reserved. 6 // 7 // Redistribution and use in source and binary forms, with or without 8 // modification, are permitted provided that the following conditions are met: 9 // 10 // * Redistributions of source code must retain the above copyright 11 // notice, this list of conditions and the following disclaimer. 12 // * Redistributions in binary form must reproduce the above copyright 13 // notice, this list of conditions and the following disclaimer in the 14 // documentation and/or other materials provided with the distribution. 15 // * Neither the name of Knut Reinert or the FU Berlin nor the names of 16 // its contributors may be used to endorse or promote products derived 17 // from this software without specific prior written permission. 18 // 19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 // ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE 23 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 29 // DAMAGE. 30 // 31 // ========================================================================== 32 // Author: Manuel Holtgrewe <manuel.holtgrewe@fu-berlin.de> 33 // ========================================================================== 34 // We put the tag definition into its own header so we can include them 35 // independently from the algorithms. 36 // ========================================================================== 37 38 #ifndef SEQAN_INCLUDE_SEQAN_ALIGN_ALIGNMENT_ALGORITHM_TAGS_H_ 39 #define SEQAN_INCLUDE_SEQAN_ALIGN_ALIGNMENT_ALGORITHM_TAGS_H_ 40 41 namespace seqan { 42 43 // ============================================================================ 44 // Forwards 45 // ============================================================================ 46 47 // ============================================================================ 48 // Tags, Classes, Enums 49 // ============================================================================ 50 51 // ---------------------------------------------------------------------------- 52 // Global Alignment Algorithm Tags 53 // ---------------------------------------------------------------------------- 54 55 /*! 56 * @defgroup AlignmentAlgorithmTags Alignment Algorithm Tags 57 * @brief Tags for selecting algorithms. 58 */ 59 60 // TODO(holtgrew): Rename MyersBitVector to Myers? Clashes with find module at the moment. 61 62 /*! 63 * @tag AlignmentAlgorithmTags#Gotoh 64 * @headerfile <seqan/align.h> 65 * @brief Tag for selecting Gotoh DP algorithm. 66 * 67 * @signature struct Gotoh_; 68 * @signature typedef Tag<Gotoh_> Gotoh; 69 */ 70 71 struct Gotoh_; 72 typedef Tag<Gotoh_> Gotoh; 73 74 /*! 75 * @tag AlignmentAlgorithmTags#NeedlemanWunsch 76 * @headerfile <seqan/align.h> 77 * @brief Tag for selecting NeedlemanWunsch DP algorithm. 78 * 79 * @signature struct Hirschberg_; 80 * @signature typedef Tag<Hirschberg_> NeedlemanWunsch; 81 */ 82 83 struct NeedlemanWunsch_; 84 typedef Tag<NeedlemanWunsch_> NeedlemanWunsch; 85 86 /*! 87 * @tag AlignmentAlgorithmTags#Hirschberg 88 * @headerfile <seqan/align.h> 89 * @brief Tag for selecting Hirschberg's DP algorithm. 90 * 91 * @signature struct Hirschberg_; 92 * @signature typedef Tag<Hirschberg_> Hirschberg; 93 */ 94 95 struct Hirschberg_; 96 typedef Tag<Hirschberg_> Hirschberg; 97 98 /*! 99 * @tag AlignmentAlgorithmTags#MyersBitVector 100 * @headerfile <seqan/align.h> 101 * @brief Tag for selecting Myers' bit-vector algorithm. 102 * 103 * @signature struct MyersBitVector_; 104 * @signature typedef Tag<MyersBitVector_> MyersBitVector; 105 */ 106 107 struct MyersBitVector_; 108 typedef Tag<MyersBitVector_> MyersBitVector; 109 110 /*! 111 * @tag AlignmentAlgorithmTags#MyersHirschberg 112 * @headerfile <seqan/align.h> 113 * @brief Tag for selecting a combination of Myers' bit-vector algorithm with Hirschberg's algorithm. 114 * 115 * @signature struct MyersHirschberg_; 116 * @signature typedef Tag<MyersHirschberg_> MyersHirschberg; 117 */ 118 119 struct MyersHirschberg_; 120 typedef Tag<MyersHirschberg_> MyersHirschberg; 121 122 // ---------------------------------------------------------------------------- 123 // Local Alignment Algorithm Tags 124 // ---------------------------------------------------------------------------- 125 126 /*! 127 * @defgroup PairwiseLocalAlignmentAlgorithms Pairwise Local Alignment Algorithms 128 * @brief Tags for selecting algorithms. 129 */ 130 131 /*! 132 * @tag PairwiseLocalAlignmentAlgorithms#SmithWaterman 133 * @headerfile <seqan/align.h> 134 * @brief Tag for selecting the Smith-Waterman algorithm. 135 * 136 * @signature struct SmithWaterman_; 137 * @signature typedef Tag<SmithWaterman_> SmithWaterman; 138 */ 139 140 struct SmithWaterman_; 141 typedef Tag<SmithWaterman_> SmithWaterman; 142 143 /*! 144 * @tag PairwiseLocalAlignmentAlgorithms#WatermanEggert 145 * @headerfile <seqan/align.h> 146 * @brief Tag for selecting the Waterman-Eggert algorithm. 147 * 148 * @signature struct WatermanEggert_; 149 * @signature typedef Tag<WatermanEggert_> WatermanEggert; 150 */ 151 152 struct WatermanEggert_; 153 typedef Tag<WatermanEggert_> WatermanEggert; 154 155 // ============================================================================ 156 // Metafunctions 157 // ============================================================================ 158 159 // ============================================================================ 160 // Functions 161 // ============================================================================ 162 163 } // namespace seqan 164 165 #endif // #ifndef SEQAN_INCLUDE_SEQAN_ALIGN_ALIGNMENT_ALGORITHM_TAGS_H_ 166