// SPDX-License-Identifier: Apache-2.0 // // Copyright 2008-2016 Conrad Sanderson (http://conradsanderson.id.au) // Copyright 2008-2016 National ICT Australia (NICTA) // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // ------------------------------------------------------------------------ //! \addtogroup subview_cube_slices //! @{ template class subview_cube_slices : public BaseCube< eT, subview_cube_slices > { public: typedef eT elem_type; typedef typename get_pod_type::result pod_type; arma_aligned const Cube& m; arma_aligned const Base& base_si; protected: arma_inline subview_cube_slices(const Cube& in_m, const Base& in_si); public: inline ~subview_cube_slices(); inline subview_cube_slices() = delete; inline void inplace_rand(const uword rand_mode); template inline void inplace_op(const eT val); template inline void inplace_op(const BaseCube& x); inline void fill(const eT val); inline void zeros(); inline void ones(); inline void randu(); inline void randn(); inline void operator+= (const eT val); inline void operator-= (const eT val); inline void operator*= (const eT val); inline void operator/= (const eT val); // deliberately returning void template inline void operator_equ(const subview_cube_slices& x); template inline void operator= (const subview_cube_slices& x); inline void operator= (const subview_cube_slices& x); template inline void operator+= (const subview_cube_slices& x); template inline void operator-= (const subview_cube_slices& x); template inline void operator%= (const subview_cube_slices& x); template inline void operator/= (const subview_cube_slices& x); template inline void operator= (const BaseCube& x); template inline void operator+= (const BaseCube& x); template inline void operator-= (const BaseCube& x); template inline void operator%= (const BaseCube& x); template inline void operator/= (const BaseCube& x); inline static void extract(Cube& out, const subview_cube_slices& in); inline static void plus_inplace(Cube& out, const subview_cube_slices& in); inline static void minus_inplace(Cube& out, const subview_cube_slices& in); inline static void schur_inplace(Cube& out, const subview_cube_slices& in); inline static void div_inplace(Cube& out, const subview_cube_slices& in); friend class Cube; }; //! @}