yat/omic/BamWriteIterator.h

Code
Comments
Other
Rev Date Author Line
2883 03 Dec 12 peter 1 #ifndef theplu_yat_omic_bam_write_iterator
2883 03 Dec 12 peter 2 #define theplu_yat_omic_bam_write_iterator
2883 03 Dec 12 peter 3
2883 03 Dec 12 peter 4 // $Id$
2883 03 Dec 12 peter 5
2993 03 Mar 13 peter 6 /*
4359 23 Aug 23 peter 7   Copyright (C) 2012, 2013, 2017, 2018, 2022, 2023 Peter Johansson
2993 03 Mar 13 peter 8
2993 03 Mar 13 peter 9   This file is part of the yat library, http://dev.thep.lu.se/yat
2993 03 Mar 13 peter 10
2993 03 Mar 13 peter 11   The yat library is free software; you can redistribute it and/or
2993 03 Mar 13 peter 12   modify it under the terms of the GNU General Public License as
2993 03 Mar 13 peter 13   published by the Free Software Foundation; either version 3 of the
2993 03 Mar 13 peter 14   License, or (at your option) any later version.
2993 03 Mar 13 peter 15
2993 03 Mar 13 peter 16   The yat library is distributed in the hope that it will be useful,
2993 03 Mar 13 peter 17   but WITHOUT ANY WARRANTY; without even the implied warranty of
2993 03 Mar 13 peter 18   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2993 03 Mar 13 peter 19   General Public License for more details.
2993 03 Mar 13 peter 20
2993 03 Mar 13 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/>.
2993 03 Mar 13 peter 23 */
2993 03 Mar 13 peter 24
4252 18 Nov 22 peter 25 #include <boost/iterator/function_output_iterator.hpp>
2883 03 Dec 12 peter 26
2883 03 Dec 12 peter 27 #include <functional>
2883 03 Dec 12 peter 28
2883 03 Dec 12 peter 29 namespace theplu {
2883 03 Dec 12 peter 30 namespace yat {
2883 03 Dec 12 peter 31 namespace omic {
2883 03 Dec 12 peter 32
2883 03 Dec 12 peter 33   class BamRead;
2883 03 Dec 12 peter 34   class OutBamFile;
2883 03 Dec 12 peter 35
2883 03 Dec 12 peter 36   /**
2910 17 Dec 12 peter 37      Functor taking a BamRead and writing to an OutBamFile. Class is
2910 17 Dec 12 peter 38      primarily used by BamWriteIterator.
2884 04 Dec 12 peter 39
2884 04 Dec 12 peter 40      \since New in yat 0.10
2883 03 Dec 12 peter 41    */
4339 15 Apr 23 peter 42   class BamWriter
2883 03 Dec 12 peter 43   {
2883 03 Dec 12 peter 44   public:
4339 15 Apr 23 peter 45     /// \c argument_type is const BamRead&
4339 15 Apr 23 peter 46     typedef const BamRead& argument_type;
4339 15 Apr 23 peter 47     /// Functor returns nothing
4339 15 Apr 23 peter 48     typedef void result_type;
4339 15 Apr 23 peter 49
2883 03 Dec 12 peter 50     /**
2883 03 Dec 12 peter 51        \brief Default constructor
2883 03 Dec 12 peter 52
2883 03 Dec 12 peter 53        \note Created object cannot write, i.e., behaviour of
2883 03 Dec 12 peter 54        operator() is undefined.
2883 03 Dec 12 peter 55     */
2883 03 Dec 12 peter 56     BamWriter(void);
2883 03 Dec 12 peter 57
2883 03 Dec 12 peter 58     /**
2883 03 Dec 12 peter 59        \brief Constructor
2883 03 Dec 12 peter 60
2883 03 Dec 12 peter 61        Creates an object that will write to \a out.
2883 03 Dec 12 peter 62      */
2883 03 Dec 12 peter 63     explicit BamWriter(OutBamFile& out);
2883 03 Dec 12 peter 64
2883 03 Dec 12 peter 65     /**
2883 03 Dec 12 peter 66        write bam read \b to OutBamFile specified in constructor.
2883 03 Dec 12 peter 67      */
2883 03 Dec 12 peter 68     void operator()(const BamRead& b) const;
2883 03 Dec 12 peter 69   private:
2883 03 Dec 12 peter 70     OutBamFile* out_;
2883 03 Dec 12 peter 71   };
2883 03 Dec 12 peter 72
2883 03 Dec 12 peter 73
2883 03 Dec 12 peter 74   /**
2883 03 Dec 12 peter 75      \brief Output iterator for bam file.
2883 03 Dec 12 peter 76
2883 03 Dec 12 peter 77      A BamWriteIterator is an \output_iterator that writes output to a
2883 03 Dec 12 peter 78      specific OutBamFile. The writing is performed via
2883 03 Dec 12 peter 79      \code
2883 03 Dec 12 peter 80      *iter = bam;
2883 03 Dec 12 peter 81      \endcode
2883 03 Dec 12 peter 82      where operator* retunrns a proxy which when assigned writes the
2883 03 Dec 12 peter 83      right hand side to associated OutBamFile.
2883 03 Dec 12 peter 84
2910 17 Dec 12 peter 85      \see OutBamFile and
2910 17 Dec 12 peter 86      <a href="http://www.sgi.com/tech/stl/ostream_iterator.html">
2910 17 Dec 12 peter 87      std::ostream_iterator</a>
2884 04 Dec 12 peter 88
2884 04 Dec 12 peter 89      \since New in yat 0.10
2883 03 Dec 12 peter 90    */
2883 03 Dec 12 peter 91   class BamWriteIterator
2883 03 Dec 12 peter 92     : public boost::function_output_iterator<BamWriter>
2883 03 Dec 12 peter 93   {
2883 03 Dec 12 peter 94   public:
2883 03 Dec 12 peter 95     /**
2883 03 Dec 12 peter 96        \brief Default contructor
2883 03 Dec 12 peter 97
2883 03 Dec 12 peter 98        result is not dereferencable
3698 25 Sep 17 peter 99
3698 25 Sep 17 peter 100        \since Function was not implemented prior 0.14.4
2883 03 Dec 12 peter 101      */
2883 03 Dec 12 peter 102     BamWriteIterator(void);
2883 03 Dec 12 peter 103
2883 03 Dec 12 peter 104     /**
2883 03 Dec 12 peter 105        Creates an iterator that is associated with \a out.
2883 03 Dec 12 peter 106      */
2883 03 Dec 12 peter 107     explicit BamWriteIterator(OutBamFile& out);
2883 03 Dec 12 peter 108   private:
2883 03 Dec 12 peter 109   };
2883 03 Dec 12 peter 110 }}}
2883 03 Dec 12 peter 111 #endif