HavoqGT
null_ostream.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013, Lawrence Livermore National Security, LLC.
3  * Produced at the Lawrence Livermore National Laboratory.
4  * Written by Roger Pearce <rpearce@llnl.gov>.
5  * LLNL-CODE-644630.
6  * All rights reserved.
7  *
8  * This file is part of HavoqGT, Version 0.1.
9  * For details, see https://computation.llnl.gov/casc/dcca-pub/dcca/Downloads.html
10  *
11  * Please also read this link – Our Notice and GNU Lesser General Public License.
12  * http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
13  *
14  * This program is free software; you can redistribute it and/or modify it under
15  * the terms of the GNU Lesser General Public License (as published by the Free
16  * Software Foundation) version 2.1 dated February 1999.
17  *
18  * This program is distributed in the hope that it will be useful, but WITHOUT ANY
19  * WARRANTY; without even the IMPLIED WARRANTY OF MERCHANTABILITY or FITNESS FOR A
20  * PARTICULAR PURPOSE. See the terms and conditions of the GNU General Public
21  * License for more details.
22  *
23  * You should have received a copy of the GNU Lesser General Public License along
24  * with this program; if not, write to the Free Software Foundation, Inc.,
25  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26  *
27  * OUR NOTICE AND TERMS AND CONDITIONS OF THE GNU GENERAL PUBLIC LICENSE
28  *
29  * Our Preamble Notice
30  *
31  * A. This notice is required to be provided under our contract with the
32  * U.S. Department of Energy (DOE). This work was produced at the Lawrence
33  * Livermore National Laboratory under Contract No. DE-AC52-07NA27344 with the DOE.
34  *
35  * B. Neither the United States Government nor Lawrence Livermore National
36  * Security, LLC nor any of their employees, makes any warranty, express or
37  * implied, or assumes any liability or responsibility for the accuracy,
38  * completeness, or usefulness of any information, apparatus, product, or process
39  * disclosed, or represents that its use would not infringe privately-owned rights.
40  *
41  * C. Also, reference herein to any specific commercial products, process, or
42  * services by trade name, trademark, manufacturer or otherwise does not
43  * necessarily constitute or imply its endorsement, recommendation, or favoring by
44  * the United States Government or Lawrence Livermore National Security, LLC. The
45  * views and opinions of authors expressed herein do not necessarily state or
46  * reflect those of the United States Government or Lawrence Livermore National
47  * Security, LLC, and shall not be used for advertising or product endorsement
48  * purposes.
49  *
50  */
51 
52 #ifndef HAVOQGT_DETAIL_NULL_OSTREAM_HPP_INCLUDED
53 #define HAVOQGT_DETAIL_NULL_OSTREAM_HPP_INCLUDED
54 
55 #include <streambuf>
56 #include <ostream>
57 
60 
61 namespace havoqgt { namespace detail {
62 
63 template <class cT, class traits = std::char_traits<cT> >
64 class basic_nullbuf: public std::basic_streambuf<cT, traits> {
65  typename traits::int_type overflow(typename traits::int_type c)
66  {
67  return traits::not_eof(c); // indicate success
68  }
69 };
70 
71 template <class cT, class traits = std::char_traits<cT> >
72 class basic_onullstream: public std::basic_ostream<cT, traits> {
73  public:
75  std::basic_ios<cT, traits>(&m_sbuf),
76  std::basic_ostream<cT, traits>(&m_sbuf)
77  {
78  this->init(&m_sbuf);
79  }
80 
81  private:
83 };
84 
85 inline std::ostream& get_null_ostream() {
86  static basic_onullstream<char> null_ostream;
87  return null_ostream;
88 }
89 
90 //typedef basic_onullstream<char> onullstream;
91 //typedef basic_onullstream<wchar_t> wonullstream;
92 
93 }} //end namespace havoqgt::detail
94 
95 
96 #endif //HAVOQGT_DETAIL_NULL_OSTREAM_HPP_INCLUDED
std::ostream & get_null_ostream()
basic_nullbuf< cT, traits > m_sbuf
traits::int_type overflow(typename traits::int_type c)