max@0
|
1 // Copyright (C) 2010 NICTA (www.nicta.com.au)
|
max@0
|
2 // Copyright (C) 2010 Conrad Sanderson
|
max@0
|
3 //
|
max@0
|
4 // This file is part of the Armadillo C++ library.
|
max@0
|
5 // It is provided without any warranty of fitness
|
max@0
|
6 // for any purpose. You can redistribute this file
|
max@0
|
7 // and/or modify it under the terms of the GNU
|
max@0
|
8 // Lesser General Public License (LGPL) as published
|
max@0
|
9 // by the Free Software Foundation, either version 3
|
max@0
|
10 // of the License or (at your option) any later version.
|
max@0
|
11 // (see http://www.opensource.org/licenses for more info)
|
max@0
|
12
|
max@0
|
13
|
max@0
|
14 //! \addtogroup injector
|
max@0
|
15 //! @{
|
max@0
|
16
|
max@0
|
17
|
max@0
|
18
|
max@0
|
19 template<typename eT>
|
max@0
|
20 class mat_injector_row
|
max@0
|
21 {
|
max@0
|
22 public:
|
max@0
|
23
|
max@0
|
24 inline mat_injector_row();
|
max@0
|
25
|
max@0
|
26 inline void insert(const eT val) const;
|
max@0
|
27
|
max@0
|
28 mutable uword n_cols;
|
max@0
|
29 mutable podarray<eT> A;
|
max@0
|
30 mutable podarray<eT> B;
|
max@0
|
31 };
|
max@0
|
32
|
max@0
|
33
|
max@0
|
34
|
max@0
|
35 template<typename T1>
|
max@0
|
36 class mat_injector
|
max@0
|
37 {
|
max@0
|
38 public:
|
max@0
|
39
|
max@0
|
40 typedef typename T1::elem_type elem_type;
|
max@0
|
41
|
max@0
|
42 inline void insert(const elem_type val) const;
|
max@0
|
43 inline void end_of_row() const;
|
max@0
|
44 inline ~mat_injector();
|
max@0
|
45
|
max@0
|
46
|
max@0
|
47 private:
|
max@0
|
48
|
max@0
|
49 inline mat_injector(T1& in_X, const elem_type val);
|
max@0
|
50 inline mat_injector(T1& in_X, const injector_end_of_row& x);
|
max@0
|
51
|
max@0
|
52 T1& X;
|
max@0
|
53 mutable uword n_rows;
|
max@0
|
54
|
max@0
|
55 mutable podarray< mat_injector_row<elem_type>* >* AA;
|
max@0
|
56 mutable podarray< mat_injector_row<elem_type>* >* BB;
|
max@0
|
57
|
max@0
|
58 friend class Mat<elem_type>;
|
max@0
|
59 friend class Row<elem_type>;
|
max@0
|
60 friend class Col<elem_type>;
|
max@0
|
61 };
|
max@0
|
62
|
max@0
|
63
|
max@0
|
64
|
max@0
|
65 //
|
max@0
|
66
|
max@0
|
67
|
max@0
|
68
|
max@0
|
69 template<typename oT>
|
max@0
|
70 class field_injector_row
|
max@0
|
71 {
|
max@0
|
72 public:
|
max@0
|
73
|
max@0
|
74 inline field_injector_row();
|
max@0
|
75 inline ~field_injector_row();
|
max@0
|
76
|
max@0
|
77 inline void insert(const oT& val) const;
|
max@0
|
78
|
max@0
|
79 mutable uword n_cols;
|
max@0
|
80 mutable field<oT>* AA;
|
max@0
|
81 mutable field<oT>* BB;
|
max@0
|
82 };
|
max@0
|
83
|
max@0
|
84
|
max@0
|
85
|
max@0
|
86 template<typename T1>
|
max@0
|
87 class field_injector
|
max@0
|
88 {
|
max@0
|
89 public:
|
max@0
|
90
|
max@0
|
91 typedef typename T1::object_type object_type;
|
max@0
|
92
|
max@0
|
93 inline void insert(const object_type& val) const;
|
max@0
|
94 inline void end_of_row() const;
|
max@0
|
95 inline ~field_injector();
|
max@0
|
96
|
max@0
|
97
|
max@0
|
98 private:
|
max@0
|
99
|
max@0
|
100 inline field_injector(T1& in_X, const object_type& val);
|
max@0
|
101 inline field_injector(T1& in_X, const injector_end_of_row& x);
|
max@0
|
102
|
max@0
|
103 T1& X;
|
max@0
|
104 mutable uword n_rows;
|
max@0
|
105
|
max@0
|
106 mutable podarray< field_injector_row<object_type>* >* AA;
|
max@0
|
107 mutable podarray< field_injector_row<object_type>* >* BB;
|
max@0
|
108
|
max@0
|
109 friend class field<object_type>;
|
max@0
|
110 };
|
max@0
|
111
|
max@0
|
112
|
max@0
|
113
|
max@0
|
114 //! @}
|