yat/omic/BamPair.h

Code
Comments
Other
Rev Date Author Line
3175 15 Mar 14 peter 1 #ifndef theplu_yat_omic_bam_pair
3175 15 Mar 14 peter 2 #define theplu_yat_omic_bam_pair
3175 15 Mar 14 peter 3
3175 15 Mar 14 peter 4 // $Id$
3175 15 Mar 14 peter 5
3175 15 Mar 14 peter 6 /*
4089 07 Sep 21 peter 7   Copyright (C) 2014, 2018, 2021 Peter Johansson
3175 15 Mar 14 peter 8
3175 15 Mar 14 peter 9   This file is part of the yat library, http://dev.thep.lu.se/yat
3175 15 Mar 14 peter 10
3175 15 Mar 14 peter 11   The yat library is free software; you can redistribute it and/or
3175 15 Mar 14 peter 12   modify it under the terms of the GNU General Public License as
3175 15 Mar 14 peter 13   published by the Free Software Foundation; either version 3 of the
3175 15 Mar 14 peter 14   License, or (at your option) any later version.
3175 15 Mar 14 peter 15
3175 15 Mar 14 peter 16   The yat library is distributed in the hope that it will be useful,
3175 15 Mar 14 peter 17   but WITHOUT ANY WARRANTY; without even the implied warranty of
3175 15 Mar 14 peter 18   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3175 15 Mar 14 peter 19   General Public License for more details.
3175 15 Mar 14 peter 20
3175 15 Mar 14 peter 21   You should have received a copy of the GNU General Public License
3752 17 Oct 18 peter 22   along with yat. If not, see <http://www.gnu.org/licenses/>.
3175 15 Mar 14 peter 23 */
3175 15 Mar 14 peter 24
3175 15 Mar 14 peter 25 #include "BamRead.h"
3175 15 Mar 14 peter 26
3175 15 Mar 14 peter 27 namespace theplu {
3175 15 Mar 14 peter 28 namespace yat {
3175 15 Mar 14 peter 29 namespace omic {
3175 15 Mar 14 peter 30
3175 15 Mar 14 peter 31   /**
3175 15 Mar 14 peter 32      \since New in yat 0.12
3175 15 Mar 14 peter 33    */
3175 15 Mar 14 peter 34   class BamPair
3175 15 Mar 14 peter 35   {
3175 15 Mar 14 peter 36   public:
3175 15 Mar 14 peter 37     /**
3175 15 Mar 14 peter 38        \brief default constructor
3175 15 Mar 14 peter 39
3175 15 Mar 14 peter 40        Creating a pair using default constructor of BamRead.
3175 15 Mar 14 peter 41      */
3175 15 Mar 14 peter 42     BamPair(void);
3175 15 Mar 14 peter 43
3175 15 Mar 14 peter 44     /**
3175 15 Mar 14 peter 45        \brief Copy constructor
3175 15 Mar 14 peter 46      */
3175 15 Mar 14 peter 47     BamPair(const BamRead& first, const BamRead& second);
3175 15 Mar 14 peter 48
3175 15 Mar 14 peter 49     /**
4025 14 Jan 21 peter 50        \brief Move constructor
4025 14 Jan 21 peter 51
4025 14 Jan 21 peter 52        \since New in yat 0.19
4025 14 Jan 21 peter 53      */
4025 14 Jan 21 peter 54     BamPair(BamRead&& first, BamRead&& second);
4025 14 Jan 21 peter 55
4025 14 Jan 21 peter 56     /**
3175 15 Mar 14 peter 57        \brief access first BamRead
3175 15 Mar 14 peter 58     */
3175 15 Mar 14 peter 59     BamRead& first(void);
3175 15 Mar 14 peter 60
3175 15 Mar 14 peter 61     /**
3175 15 Mar 14 peter 62        \brief access first BamRead
3175 15 Mar 14 peter 63     */
3175 15 Mar 14 peter 64     const BamRead& first(void) const;
3175 15 Mar 14 peter 65
3175 15 Mar 14 peter 66     /**
3175 15 Mar 14 peter 67        \brief access second BamRead
3175 15 Mar 14 peter 68     */
3175 15 Mar 14 peter 69     BamRead& second(void);
3175 15 Mar 14 peter 70
3175 15 Mar 14 peter 71     /**
3175 15 Mar 14 peter 72        \brief access second BamRead
3175 15 Mar 14 peter 73     */
3175 15 Mar 14 peter 74     const BamRead& second(void) const;
3175 15 Mar 14 peter 75
3175 15 Mar 14 peter 76   private:
3175 15 Mar 14 peter 77     BamRead first_;
3175 15 Mar 14 peter 78     BamRead second_;
3175 15 Mar 14 peter 79   };
3175 15 Mar 14 peter 80
3176 15 Mar 14 peter 81
3176 15 Mar 14 peter 82   /**
3176 15 Mar 14 peter 83      A proxy class that behaves like a const BamPair&.
3176 15 Mar 14 peter 84
3176 15 Mar 14 peter 85      The class is used in BamPairIterator. The class allows to create
3176 15 Mar 14 peter 86      an object that looks like a const reference of BamPair from two
3176 15 Mar 14 peter 87      BamRead pointers without copying the BamRead objects. As the
3176 15 Mar 14 peter 88      class is aimed at looking like a const BamPair&, implicit
3176 15 Mar 14 peter 89      conversion to BamPair is allowed to mimic: BamPair = const BamPair&.
3176 15 Mar 14 peter 90    */
3176 15 Mar 14 peter 91   class BamPairProxy
3176 15 Mar 14 peter 92   {
3176 15 Mar 14 peter 93   public:
3176 15 Mar 14 peter 94     /**
3176 15 Mar 14 peter 95        \brief Default constructor
3176 15 Mar 14 peter 96     */
3176 15 Mar 14 peter 97     BamPairProxy(void);
3176 15 Mar 14 peter 98
3176 15 Mar 14 peter 99     /**
3176 15 Mar 14 peter 100        Create a proxy from \a first and \a second.
3176 15 Mar 14 peter 101
3176 15 Mar 14 peter 102        \note if the objects pointed to by \a first and \a second goes
3176 15 Mar 14 peter 103        out of scope, this class becomes invalid and behaviour is
3176 15 Mar 14 peter 104        undefined.
3176 15 Mar 14 peter 105      */
3176 15 Mar 14 peter 106     BamPairProxy(const BamRead* first, const BamRead* second);
3176 15 Mar 14 peter 107
3176 15 Mar 14 peter 108     /**
3176 15 Mar 14 peter 109        \return const reference to first BamRead
3176 15 Mar 14 peter 110      */
3176 15 Mar 14 peter 111     const BamRead& first(void) const;
3176 15 Mar 14 peter 112
3176 15 Mar 14 peter 113     /**
3176 15 Mar 14 peter 114        \return const reference to second BamRead
3176 15 Mar 14 peter 115     */
3176 15 Mar 14 peter 116     const BamRead& second(void) const;
3176 15 Mar 14 peter 117
3176 15 Mar 14 peter 118     /**
3176 15 Mar 14 peter 119        Implicit conversion from BamPairProxy to BamPair.
3176 15 Mar 14 peter 120      */
3176 15 Mar 14 peter 121     operator BamPair() const;
3176 15 Mar 14 peter 122   private:
3176 15 Mar 14 peter 123     const BamRead* first_;
3176 15 Mar 14 peter 124     const BamRead* second_;
3176 15 Mar 14 peter 125   };
3176 15 Mar 14 peter 126
3175 15 Mar 14 peter 127 }}}
3175 15 Mar 14 peter 128 #endif