arma_ostream_proto.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2010 NICTA and the authors listed below
00002 // http://nicta.com.au
00003 // 
00004 // Authors:
00005 // - Conrad Sanderson (conradsand at ieee dot org)
00006 // 
00007 // This file is part of the Armadillo C++ library.
00008 // It is provided without any warranty of fitness
00009 // for any purpose. You can redistribute this file
00010 // and/or modify it under the terms of the GNU
00011 // Lesser General Public License (LGPL) as published
00012 // by the Free Software Foundation, either version 3
00013 // of the License or (at your option) any later version.
00014 // (see http://www.opensource.org/licenses for more info)
00015 
00016 
00017 //! \addtogroup arma_ostream
00018 //! @{
00019 
00020 
00021 
00022 class arma_ostream_state
00023   {
00024   private:
00025 
00026   const ios::fmtflags   orig_flags;
00027   const std::streamsize orig_precision;
00028   const std::streamsize orig_width;
00029   const char            orig_fill;
00030 
00031 
00032   public:
00033 
00034   inline arma_ostream_state(const std::ostream& o);
00035   
00036   inline void restore(std::ostream& o) const;
00037   };
00038 
00039 
00040 
00041 class arma_ostream
00042   {
00043   public:
00044   
00045   template<typename eT> inline static u32 modify_stream(std::ostream& o, const eT*              data, const u32 n_elem);
00046   template<typename  T> inline static u32 modify_stream(std::ostream& o, const std::complex<T>* data, const u32 n_elem);
00047   
00048   template<typename eT> arma_inline static void print_elem(std::ostream& o, const eT&              x);
00049   template<typename  T> arma_inline static void print_elem(std::ostream& o, const std::complex<T>& x);
00050 
00051   template<typename eT> inline static void print(std::ostream& o, const  Mat<eT>& m, const bool modify);
00052   template<typename eT> inline static void print(std::ostream& o, const Cube<eT>& m, const bool modify);
00053   
00054   template<typename oT> inline static void print(std::ostream& o, const field<oT>&         m);
00055   template<typename oT> inline static void print(std::ostream& o, const subview_field<oT>& m);
00056   };
00057 
00058 
00059 
00060 //! @}