arma_ostream_proto.hpp

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