Chris@49: // Copyright (C) 2008-2011 NICTA (www.nicta.com.au) Chris@49: // Copyright (C) 2008-2011 Conrad Sanderson Chris@49: // Chris@49: // This Source Code Form is subject to the terms of the Mozilla Public Chris@49: // License, v. 2.0. If a copy of the MPL was not distributed with this Chris@49: // file, You can obtain one at http://mozilla.org/MPL/2.0/. Chris@49: Chris@49: Chris@49: //! \addtogroup arma_ostream Chris@49: //! @{ Chris@49: Chris@49: Chris@49: Chris@49: class arma_ostream_state Chris@49: { Chris@49: private: Chris@49: Chris@49: const ios::fmtflags orig_flags; Chris@49: const std::streamsize orig_precision; Chris@49: const std::streamsize orig_width; Chris@49: const char orig_fill; Chris@49: Chris@49: Chris@49: public: Chris@49: Chris@49: inline arma_ostream_state(const std::ostream& o); Chris@49: Chris@49: inline void restore(std::ostream& o) const; Chris@49: }; Chris@49: Chris@49: Chris@49: Chris@49: class arma_ostream Chris@49: { Chris@49: public: Chris@49: Chris@49: template inline static std::streamsize modify_stream(std::ostream& o, const eT* data, const uword n_elem); Chris@49: template inline static std::streamsize modify_stream(std::ostream& o, const std::complex* data, const uword n_elem); Chris@49: template inline static std::streamsize modify_stream(std::ostream& o, typename SpMat::const_iterator begin, const uword n_elem, const typename arma_not_cx::result* junk = 0); Chris@49: template inline static std::streamsize modify_stream(std::ostream& o, typename SpMat::const_iterator begin, const uword n_elem, const typename arma_cx_only::result* junk = 0); Chris@49: Chris@49: template inline static void print_elem_zero(std::ostream& o, const bool modify); Chris@49: Chris@49: template arma_inline static void print_elem(std::ostream& o, const eT& x, const bool modify); Chris@49: template inline static void print_elem(std::ostream& o, const std::complex& x, const bool modify); Chris@49: Chris@49: template inline static void print(std::ostream& o, const Mat& m, const bool modify); Chris@49: template inline static void print(std::ostream& o, const Cube& m, const bool modify); Chris@49: Chris@49: template inline static void print(std::ostream& o, const field& m); Chris@49: template inline static void print(std::ostream& o, const subview_field& m); Chris@49: Chris@49: Chris@49: template inline static void print_dense(std::ostream& o, const SpMat& m, const bool modify); Chris@49: template inline static void print(std::ostream& o, const SpMat& m, const bool modify); Chris@49: }; Chris@49: Chris@49: Chris@49: Chris@49: //! @}