Chris@49: // Copyright (C) 2008-2012 NICTA (www.nicta.com.au) Chris@49: // Copyright (C) 2008-2013 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: using std::cout; Chris@49: using std::cerr; Chris@49: using std::endl; Chris@49: using std::ios; Chris@49: Chris@49: template struct Base; Chris@49: template struct BaseCube; Chris@49: Chris@49: template class Mat; Chris@49: template class Col; Chris@49: template class Row; Chris@49: template class Cube; Chris@49: template class xvec_htrans; Chris@49: template class field; Chris@49: Chris@49: template class subview; Chris@49: template class subview_col; Chris@49: template class subview_row; Chris@49: template class subview_row_strans; Chris@49: template class subview_row_htrans; Chris@49: template class subview_cube; Chris@49: template class subview_field; Chris@49: Chris@49: template class SpValProxy; Chris@49: template class SpMat; Chris@49: template class SpCol; Chris@49: template class SpRow; Chris@49: template class SpSubview; Chris@49: Chris@49: template class diagview; Chris@49: Chris@49: template class subview_elem1; Chris@49: template class subview_elem2; Chris@49: Chris@49: template class subview_each1; Chris@49: template class subview_each2; Chris@49: Chris@49: Chris@49: class arma_empty_class {}; Chris@49: Chris@49: class diskio; Chris@49: Chris@49: class op_min; Chris@49: class op_max; Chris@49: Chris@49: class op_strans; Chris@49: class op_htrans; Chris@49: class op_htrans2; Chris@49: class op_inv; Chris@49: class op_sum; Chris@49: class op_abs; Chris@49: class op_diagmat; Chris@49: class op_trimat; Chris@49: class op_diagvec; Chris@49: Chris@49: class eop_conj; Chris@49: Chris@49: class glue_times; Chris@49: class glue_times_diag; Chris@49: Chris@49: class glue_rel_lt; Chris@49: class glue_rel_gt; Chris@49: class glue_rel_lteq; Chris@49: class glue_rel_gteq; Chris@49: class glue_rel_eq; Chris@49: class glue_rel_noteq; Chris@49: Chris@49: class op_rel_lt_pre; Chris@49: class op_rel_lt_post; Chris@49: class op_rel_gt_pre; Chris@49: class op_rel_gt_post; Chris@49: class op_rel_lteq_pre; Chris@49: class op_rel_lteq_post; Chris@49: class op_rel_gteq_pre; Chris@49: class op_rel_gteq_post; Chris@49: class op_rel_eq; Chris@49: class op_rel_noteq; Chris@49: Chris@49: class gen_ones_diag; Chris@49: class gen_ones_full; Chris@49: class gen_zeros; Chris@49: class gen_randu; Chris@49: class gen_randn; Chris@49: Chris@49: class glue_mixed_plus; Chris@49: class glue_mixed_minus; Chris@49: class glue_mixed_div; Chris@49: class glue_mixed_schur; Chris@49: class glue_mixed_times; Chris@49: Chris@49: class op_cx_scalar_times; Chris@49: class op_cx_scalar_plus; Chris@49: class op_cx_scalar_minus_pre; Chris@49: class op_cx_scalar_minus_post; Chris@49: class op_cx_scalar_div_pre; Chris@49: class op_cx_scalar_div_post; Chris@49: Chris@49: Chris@49: Chris@49: class op_subview_elem_equ; Chris@49: class op_subview_elem_inplace_plus; Chris@49: class op_subview_elem_inplace_minus; Chris@49: class op_subview_elem_inplace_schur; Chris@49: class op_subview_elem_inplace_div; Chris@49: Chris@49: Chris@49: Chris@49: template class gemm; Chris@49: template class gemv; Chris@49: Chris@49: Chris@49: template< typename eT, typename gen_type> class Gen; Chris@49: Chris@49: template< typename T1, typename op_type> class Op; Chris@49: template< typename T1, typename eop_type> class eOp; Chris@49: template class mtOp; Chris@49: Chris@49: template< typename T1, typename T2, typename glue_type> class Glue; Chris@49: template< typename T1, typename T2, typename eglue_type> class eGlue; Chris@49: template class mtGlue; Chris@49: Chris@49: Chris@49: Chris@49: template< typename eT, typename gen_type> class GenCube; Chris@49: Chris@49: template< typename T1, typename op_type> class OpCube; Chris@49: template< typename T1, typename eop_type> class eOpCube; Chris@49: template class mtOpCube; Chris@49: Chris@49: template< typename T1, typename T2, typename glue_type> class GlueCube; Chris@49: template< typename T1, typename T2, typename eglue_type> class eGlueCube; Chris@49: template class mtGlueCube; Chris@49: Chris@49: Chris@49: template class Proxy; Chris@49: template class ProxyCube; Chris@49: Chris@49: Chris@49: Chris@49: class spop_strans; Chris@49: class spop_htrans; Chris@49: class spop_scalar_times; Chris@49: Chris@49: class spglue_plus; Chris@49: class spglue_plus2; Chris@49: Chris@49: class spglue_minus; Chris@49: class spglue_minus2; Chris@49: Chris@49: class spglue_times; Chris@49: class spglue_times2; Chris@49: Chris@49: Chris@49: template< typename T1, typename spop_type> class SpOp; Chris@49: template class mtSpOp; Chris@49: Chris@49: template class SpGlue; Chris@49: Chris@49: Chris@49: template class SpProxy; Chris@49: Chris@49: Chris@49: Chris@49: struct arma_vec_indicator {}; Chris@49: struct arma_fixed_indicator {}; Chris@49: Chris@49: Chris@49: //! \addtogroup injector Chris@49: //! @{ Chris@49: Chris@49: template struct injector_end_of_row {}; Chris@49: Chris@49: static const injector_end_of_row<> endr = injector_end_of_row<>(); Chris@49: //!< endr indicates "end of row" when using the << operator; Chris@49: //!< similar conceptual meaning to std::endl Chris@49: Chris@49: //! @} Chris@49: Chris@49: Chris@49: Chris@49: //! \addtogroup diskio Chris@49: //! @{ Chris@49: Chris@49: Chris@49: enum file_type Chris@49: { Chris@49: file_type_unknown, Chris@49: auto_detect, //!< Automatically detect the file type Chris@49: raw_ascii, //!< ASCII format (text), without any other information. Chris@49: arma_ascii, //!< Armadillo ASCII format (text), with information about matrix type and size Chris@49: csv_ascii, //!< comma separated values (CSV), without any other information Chris@49: raw_binary, //!< raw binary format, without any other information. Chris@49: arma_binary, //!< Armadillo binary format, with information about matrix type and size Chris@49: pgm_binary, //!< Portable Grey Map (greyscale image) Chris@49: ppm_binary, //!< Portable Pixel Map (colour image), used by the field and cube classes Chris@49: hdf5_binary, //!< Open binary format, not specific to Armadillo, which can store arbitrary data Chris@49: coord_ascii //!< simple co-ordinate format for sparse matrices Chris@49: }; Chris@49: Chris@49: Chris@49: //! @} Chris@49: Chris@49: