Chris@49
|
1 // Copyright (C) 2010-2013 NICTA (www.nicta.com.au)
|
Chris@49
|
2 // Copyright (C) 2010-2013 Conrad Sanderson
|
Chris@49
|
3 //
|
Chris@49
|
4 // This Source Code Form is subject to the terms of the Mozilla Public
|
Chris@49
|
5 // License, v. 2.0. If a copy of the MPL was not distributed with this
|
Chris@49
|
6 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
Chris@49
|
7
|
Chris@49
|
8
|
Chris@49
|
9 //! \addtogroup eOp
|
Chris@49
|
10 //! @{
|
Chris@49
|
11
|
Chris@49
|
12
|
Chris@49
|
13
|
Chris@49
|
14 template<typename T1, typename eop_type>
|
Chris@49
|
15 eOp<T1, eop_type>::eOp(const T1& in_m)
|
Chris@49
|
16 : P(in_m)
|
Chris@49
|
17 {
|
Chris@49
|
18 arma_extra_debug_sigprint();
|
Chris@49
|
19 }
|
Chris@49
|
20
|
Chris@49
|
21
|
Chris@49
|
22
|
Chris@49
|
23 template<typename T1, typename eop_type>
|
Chris@49
|
24 eOp<T1, eop_type>::eOp(const T1& in_m, const typename T1::elem_type in_aux)
|
Chris@49
|
25 : P(in_m)
|
Chris@49
|
26 , aux(in_aux)
|
Chris@49
|
27 {
|
Chris@49
|
28 arma_extra_debug_sigprint();
|
Chris@49
|
29 }
|
Chris@49
|
30
|
Chris@49
|
31
|
Chris@49
|
32
|
Chris@49
|
33 template<typename T1, typename eop_type>
|
Chris@49
|
34 eOp<T1, eop_type>::eOp(const T1& in_m, const uword in_aux_uword_a, const uword in_aux_uword_b)
|
Chris@49
|
35 : P(in_m)
|
Chris@49
|
36 , aux_uword_a(in_aux_uword_a)
|
Chris@49
|
37 , aux_uword_b(in_aux_uword_b)
|
Chris@49
|
38 {
|
Chris@49
|
39 arma_extra_debug_sigprint();
|
Chris@49
|
40 }
|
Chris@49
|
41
|
Chris@49
|
42
|
Chris@49
|
43
|
Chris@49
|
44 template<typename T1, typename eop_type>
|
Chris@49
|
45 eOp<T1, eop_type>::eOp(const T1& in_m, const typename T1::elem_type in_aux, const uword in_aux_uword_a, const uword in_aux_uword_b)
|
Chris@49
|
46 : P(in_m)
|
Chris@49
|
47 , aux(in_aux)
|
Chris@49
|
48 , aux_uword_a(in_aux_uword_a)
|
Chris@49
|
49 , aux_uword_b(in_aux_uword_b)
|
Chris@49
|
50 {
|
Chris@49
|
51 arma_extra_debug_sigprint();
|
Chris@49
|
52 }
|
Chris@49
|
53
|
Chris@49
|
54
|
Chris@49
|
55
|
Chris@49
|
56 template<typename T1, typename eop_type>
|
Chris@49
|
57 eOp<T1, eop_type>::~eOp()
|
Chris@49
|
58 {
|
Chris@49
|
59 arma_extra_debug_sigprint();
|
Chris@49
|
60 }
|
Chris@49
|
61
|
Chris@49
|
62
|
Chris@49
|
63
|
Chris@49
|
64 template<typename T1, typename eop_type>
|
Chris@49
|
65 arma_inline
|
Chris@49
|
66 uword
|
Chris@49
|
67 eOp<T1, eop_type>::get_n_rows() const
|
Chris@49
|
68 {
|
Chris@49
|
69 return is_row ? 1 : P.get_n_rows();
|
Chris@49
|
70 }
|
Chris@49
|
71
|
Chris@49
|
72
|
Chris@49
|
73
|
Chris@49
|
74 template<typename T1, typename eop_type>
|
Chris@49
|
75 arma_inline
|
Chris@49
|
76 uword
|
Chris@49
|
77 eOp<T1, eop_type>::get_n_cols() const
|
Chris@49
|
78 {
|
Chris@49
|
79 return is_col ? 1 : P.get_n_cols();
|
Chris@49
|
80 }
|
Chris@49
|
81
|
Chris@49
|
82
|
Chris@49
|
83
|
Chris@49
|
84 template<typename T1, typename eop_type>
|
Chris@49
|
85 arma_inline
|
Chris@49
|
86 uword
|
Chris@49
|
87 eOp<T1, eop_type>::get_n_elem() const
|
Chris@49
|
88 {
|
Chris@49
|
89 return P.get_n_elem();
|
Chris@49
|
90 }
|
Chris@49
|
91
|
Chris@49
|
92
|
Chris@49
|
93
|
Chris@49
|
94 template<typename T1, typename eop_type>
|
Chris@49
|
95 arma_inline
|
Chris@49
|
96 typename T1::elem_type
|
Chris@49
|
97 eOp<T1, eop_type>::operator[] (const uword ii) const
|
Chris@49
|
98 {
|
Chris@49
|
99 return eop_core<eop_type>::process(P[ii], aux);
|
Chris@49
|
100 }
|
Chris@49
|
101
|
Chris@49
|
102
|
Chris@49
|
103
|
Chris@49
|
104 template<typename T1, typename eop_type>
|
Chris@49
|
105 arma_inline
|
Chris@49
|
106 typename T1::elem_type
|
Chris@49
|
107 eOp<T1, eop_type>::at(const uword row, const uword col) const
|
Chris@49
|
108 {
|
Chris@49
|
109 if(is_row)
|
Chris@49
|
110 {
|
Chris@49
|
111 return eop_core<eop_type>::process(P.at(0, col), aux);
|
Chris@49
|
112 }
|
Chris@49
|
113 else
|
Chris@49
|
114 if(is_col)
|
Chris@49
|
115 {
|
Chris@49
|
116 return eop_core<eop_type>::process(P.at(row, 0), aux);
|
Chris@49
|
117 }
|
Chris@49
|
118 else
|
Chris@49
|
119 {
|
Chris@49
|
120 return eop_core<eop_type>::process(P.at(row, col), aux);
|
Chris@49
|
121 }
|
Chris@49
|
122 }
|
Chris@49
|
123
|
Chris@49
|
124
|
Chris@49
|
125
|
Chris@49
|
126 template<typename T1, typename eop_type>
|
Chris@49
|
127 arma_inline
|
Chris@49
|
128 typename T1::elem_type
|
Chris@49
|
129 eOp<T1, eop_type>::at_alt(const uword ii) const
|
Chris@49
|
130 {
|
Chris@49
|
131 return eop_core<eop_type>::process(P.at_alt(ii), aux);
|
Chris@49
|
132 }
|
Chris@49
|
133
|
Chris@49
|
134
|
Chris@49
|
135
|
Chris@49
|
136 //! @}
|