Chris@49: // Copyright (C) 2008-2012 NICTA (www.nicta.com.au) Chris@49: // Copyright (C) 2008-2012 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 Base Chris@49: //! @{ Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: arma_inline Chris@49: const derived& Chris@49: Base::get_ref() const Chris@49: { Chris@49: return static_cast(*this); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: arma_inline Chris@49: const Op Chris@49: Base::t() const Chris@49: { Chris@49: return Op( (*this).get_ref() ); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: arma_inline Chris@49: const Op Chris@49: Base::ht() const Chris@49: { Chris@49: return Op( (*this).get_ref() ); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: arma_inline Chris@49: const Op Chris@49: Base::st() const Chris@49: { Chris@49: return Op( (*this).get_ref() ); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: inline Chris@49: void Chris@49: Base::print(const std::string extra_text) const Chris@49: { Chris@49: const Proxy P( (*this).get_ref() ); Chris@49: Chris@49: const quasi_unwrap< typename Proxy::stored_type > tmp(P.Q); Chris@49: Chris@49: tmp.M.impl_print(extra_text); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: inline Chris@49: void Chris@49: Base::print(std::ostream& user_stream, const std::string extra_text) const Chris@49: { Chris@49: const Proxy P( (*this).get_ref() ); Chris@49: Chris@49: const quasi_unwrap< typename Proxy::stored_type > tmp(P.Q); Chris@49: Chris@49: tmp.M.impl_print(user_stream, extra_text); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: inline Chris@49: void Chris@49: Base::raw_print(const std::string extra_text) const Chris@49: { Chris@49: const Proxy P( (*this).get_ref() ); Chris@49: Chris@49: const quasi_unwrap< typename Proxy::stored_type > tmp(P.Q); Chris@49: Chris@49: tmp.M.impl_raw_print(extra_text); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: inline Chris@49: void Chris@49: Base::raw_print(std::ostream& user_stream, const std::string extra_text) const Chris@49: { Chris@49: const Proxy P( (*this).get_ref() ); Chris@49: Chris@49: const quasi_unwrap< typename Proxy::stored_type > tmp(P.Q); Chris@49: Chris@49: tmp.M.impl_raw_print(user_stream, extra_text); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: // Chris@49: // extra functions defined in Base_blas_elem_type Chris@49: Chris@49: template Chris@49: arma_inline Chris@49: const Op Chris@49: Base_blas_elem_type::i(const bool slow) const Chris@49: { Chris@49: return Op( static_cast(*this), ((slow == false) ? 0 : 1), 0 ); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: // Chris@49: // extra functions defined in Base_eval_Mat Chris@49: Chris@49: template Chris@49: arma_inline Chris@49: const derived& Chris@49: Base_eval_Mat::eval() const Chris@49: { Chris@49: arma_extra_debug_sigprint(); Chris@49: Chris@49: return static_cast(*this); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: // Chris@49: // extra functions defined in Base_eval_expr Chris@49: Chris@49: template Chris@49: arma_inline Chris@49: Mat Chris@49: Base_eval_expr::eval() const Chris@49: { Chris@49: arma_extra_debug_sigprint(); Chris@49: Chris@49: return Mat( static_cast(*this) ); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: //! @}