//! More...
Classes | |
class | arma_ostream_state |
class | arma_ostream |
Functions | |
arma_ostream_state::arma_ostream_state (const std::ostream &o) | |
void | arma_ostream_state::restore (std::ostream &o) const |
template<typename eT > | |
static u32 | arma_ostream::modify_stream (std::ostream &o, const eT *data, const u32 n_elem) |
template<typename T > | |
static u32 | arma_ostream::modify_stream (std::ostream &o, const std::complex< T > *data, const u32 n_elem) |
"better than nothing" settings for complex numbers | |
template<typename eT > | |
static arma_inline void | arma_ostream::print_elem (std::ostream &o, const eT &x) |
Print an element to the specified stream. | |
template<typename T > | |
static arma_inline void | arma_ostream::print_elem (std::ostream &o, const std::complex< T > &x) |
Print a complex element to the specified stream //! EXPERIMENTAL ! | |
template<typename eT > | |
static void | arma_ostream::print (std::ostream &o, const Mat< eT > &m, const bool modify) |
Print a matrix to the specified stream. | |
template<typename eT > | |
static void | arma_ostream::print (std::ostream &o, const Cube< eT > &m, const bool modify) |
Print a cube to the specified stream. | |
template<typename oT > | |
static void | arma_ostream::print (std::ostream &o, const field< oT > &m) |
Print a field to the specified stream //! Assumes type oT can be printed, i.e. oT has std::ostream& operator<< (std::ostream&, const oT&). | |
template<typename oT > | |
static void | arma_ostream::print (std::ostream &o, const subview_field< oT > &m) |
Print a subfield to the specified stream //! Assumes type oT can be printed, i.e. oT has std::ostream& operator<< (std::ostream&, const oT&). |
//!
arma_ostream_state::arma_ostream_state | ( | const std::ostream & | o | ) | [inline, inherited] |
Definition at line 23 of file arma_ostream_meat.hpp.
: orig_flags (o.flags()) , orig_precision(o.precision()) , orig_width (o.width()) , orig_fill (o.fill()) { }
void arma_ostream_state::restore | ( | std::ostream & | o | ) | const [inline, inherited] |
Definition at line 35 of file arma_ostream_meat.hpp.
References arma_ostream_state::orig_fill, arma_ostream_state::orig_flags, arma_ostream_state::orig_precision, and arma_ostream_state::orig_width.
Referenced by print().
{ o.flags (orig_flags); o.precision(orig_precision); o.width (orig_width); o.fill (orig_fill); }
u32 arma_ostream::modify_stream | ( | std::ostream & | o, | |
const eT * | data, | |||
const u32 | n_elem | |||
) | [inline, static, inherited] |
Definition at line 53 of file arma_ostream_meat.hpp.
Referenced by print().
{ o.unsetf(ios::showbase); o.unsetf(ios::uppercase); o.unsetf(ios::showpos); o.fill(' '); u32 cell_width; bool use_layout_B = false; bool use_layout_C = false; for(u32 i=0; i<n_elem; ++i) { const eT val = data[i]; if( val >= eT(+100) || ( (is_signed<eT>::value == true) && (val <= eT(-100)) ) || ( (is_non_integral<eT>::value == true) && (val > eT(0)) && (val <= eT(+1e-4)) ) || ( (is_non_integral<eT>::value == true) && (is_signed<eT>::value == true) && (val < eT(0)) && (val >= eT(-1e-4)) ) ) { use_layout_C = true; break; } if( (val >= eT(+10)) || ( (is_signed<eT>::value == true) && (val <= eT(-10)) ) ) { use_layout_B = true; } } if(use_layout_C == true) { o.setf(ios::scientific); o.setf(ios::right); o.unsetf(ios::fixed); o.precision(4); cell_width = 13; } else if(use_layout_B == true) { o.unsetf(ios::scientific); o.setf(ios::right); o.setf(ios::fixed); o.precision(4); cell_width = 10; } else { o.unsetf(ios::scientific); o.setf(ios::right); o.setf(ios::fixed); o.precision(4); cell_width = 9; } return cell_width; }
u32 arma_ostream::modify_stream | ( | std::ostream & | o, | |
const std::complex< T > * | data, | |||
const u32 | n_elem | |||
) | [inline, static, inherited] |
"better than nothing" settings for complex numbers
Definition at line 124 of file arma_ostream_meat.hpp.
{ o.unsetf(ios::showbase); o.unsetf(ios::uppercase); o.fill(' '); o.setf(ios::scientific); o.setf(ios::showpos); o.setf(ios::right); o.unsetf(ios::fixed); u32 cell_width; o.precision(3); cell_width = 2 + 2*(1 + 3 + o.precision() + 5) + 1; return cell_width; }
arma_inline void arma_ostream::print_elem | ( | std::ostream & | o, | |
const eT & | x | |||
) | [static, inherited] |
Print an element to the specified stream.
Definition at line 149 of file arma_ostream_meat.hpp.
Referenced by print().
{ if(x != eT(0)) { o << x; } else { const std::streamsize orig_precision = o.precision(); o.precision(0); o << eT(0); o.precision(orig_precision); } }
arma_inline void arma_ostream::print_elem | ( | std::ostream & | o, | |
const std::complex< T > & | x | |||
) | [static, inherited] |
Print a complex element to the specified stream //! EXPERIMENTAL !
Definition at line 174 of file arma_ostream_meat.hpp.
{ if( (x.real() != T(0)) || (x.imag() != T(0)) ) { std::ostringstream ss; ss.flags(o.flags()); //ss.imbue(o.getloc()); ss.precision(o.precision()); ss << '(' << x.real() << ',' << x.imag() << ')'; o << ss.str(); } else { o << "(0,0)"; } }
void arma_ostream::print | ( | std::ostream & | o, | |
const Mat< eT > & | m, | |||
const bool | modify | |||
) | [inline, static, inherited] |
Print a matrix to the specified stream.
Definition at line 198 of file arma_ostream_meat.hpp.
References Mat< eT >::at(), Mat< eT >::memptr(), modify_stream(), Mat< eT >::n_cols, Mat< eT >::n_elem, Mat< eT >::n_rows, print_elem(), and arma_ostream_state::restore().
Referenced by operator<<(), and print().
{ arma_extra_debug_sigprint(); const arma_ostream_state stream_state(o); u32 cell_width; if(modify == true) { cell_width = arma_ostream::modify_stream(o, m.memptr(), m.n_elem); } else { cell_width = o.width(); // copy the user's cell width } if(cell_width > 0) { for(u32 row=0; row < m.n_rows; ++row) { for(u32 col=0; col < m.n_cols; ++col) { // the cell width appears to be reset after each element is printed, // hence we need to restore it o.width(cell_width); arma_ostream::print_elem(o, m.at(row,col)); } o << '\n'; } } else { for(u32 row=0; row < m.n_rows; ++row) { for(u32 col=0; col < m.n_cols-1; ++col) { arma_ostream::print_elem(o, m.at(row,col)); o << ' '; } arma_ostream::print_elem(o, m.at(row, m.n_cols-1)); o << '\n'; } } o.flush(); stream_state.restore(o); }
void arma_ostream::print | ( | std::ostream & | o, | |
const Cube< eT > & | m, | |||
const bool | modify | |||
) | [inline, static, inherited] |
Print a cube to the specified stream.
Definition at line 255 of file arma_ostream_meat.hpp.
References Cube< eT >::memptr(), modify_stream(), Cube< eT >::n_elem, Cube< eT >::n_slices, print(), arma_ostream_state::restore(), and Cube< eT >::slice().
{ arma_extra_debug_sigprint(); const arma_ostream_state stream_state(o); u32 cell_width; if(modify == true) { cell_width = arma_ostream::modify_stream(o, x.memptr(), x.n_elem); } else { cell_width = o.width(); } for(u32 slice=0; slice < x.n_slices; ++slice) { o << "[cube slice " << slice << ']' << '\n'; o.width(cell_width); arma_ostream::print(o, x.slice(slice), false); o << '\n'; } stream_state.restore(o); }
void arma_ostream::print | ( | std::ostream & | o, | |
const field< oT > & | m | |||
) | [inline, static, inherited] |
Print a field to the specified stream //! Assumes type oT can be printed, i.e. oT has std::ostream& operator<< (std::ostream&, const oT&).
Definition at line 291 of file arma_ostream_meat.hpp.
References field< oT >::at(), field< oT >::n_cols, field< oT >::n_rows, and arma_ostream_state::restore().
{ arma_extra_debug_sigprint(); const arma_ostream_state stream_state(o); const std::streamsize cell_width = o.width(); for(u32 col=0; col<x.n_cols; ++col) { o << "[field column " << col << ']' << '\n'; for(u32 row=0; row<x.n_rows; ++row) { o.width(cell_width); o << x.at(row,col) << '\n'; } o << '\n'; } o.flush(); stream_state.restore(o); }
void arma_ostream::print | ( | std::ostream & | o, | |
const subview_field< oT > & | m | |||
) | [inline, static, inherited] |
Print a subfield to the specified stream //! Assumes type oT can be printed, i.e. oT has std::ostream& operator<< (std::ostream&, const oT&).
Definition at line 322 of file arma_ostream_meat.hpp.
References subview_field< oT >::at(), subview_field< oT >::n_cols, subview_field< oT >::n_rows, and arma_ostream_state::restore().
{ arma_extra_debug_sigprint(); const arma_ostream_state stream_state(o); const std::streamsize cell_width = o.width(); for(u32 col=0; col<x.n_cols; ++col) { o << "[subfield column " << col << ']' << '\n'; for(u32 row=0; row<x.n_rows; ++row) { o.width(cell_width); o << x.at(row,col) << '\n'; } o << '\n'; } o.flush(); stream_state.restore(o); }