comparison liboctave/dim-vector.h @ 10420:3373fdc0b14a

use macro for 2 and 3 arg dim_vector constructors
author John W. Eaton <jwe@octave.org>
date Wed, 17 Mar 2010 09:34:43 -0400
parents afe44ee90cbd
children 8615b55b5caf
comparison
equal deleted inserted replaced
10419:afe44ee90cbd 10420:3373fdc0b14a
132 } 132 }
133 } 133 }
134 134
135 public: 135 public:
136 136
137 // The constructor
138 //
139 // dim_vector (n)
140 //
141 // creates an dimension vector with N rows and 1 column. It is
142 // deprecated because of the potentiol for confusion that it causes.
143 // Additional constructors of the form
144 //
145 // dim_vector (r, c)
146 // dim_vector (r, c, p)
147 // dim_vector (d1, d2, d3, d4, ...)
148 //
149 // are available for up to 7 dimensions.
150
137 explicit dim_vector (octave_idx_type n) GCC_ATTR_DEPRECATED 151 explicit dim_vector (octave_idx_type n) GCC_ATTR_DEPRECATED
138 : rep (newrep (2)) 152 : rep (newrep (2))
139 { 153 {
140 rep[0] = n; 154 rep[0] = n;
141 rep[1] = 1; 155 rep[1] = 1;
142 } 156 }
143 157
144 dim_vector (octave_idx_type r, octave_idx_type c)
145 : rep (newrep (2))
146 {
147 rep[0] = r;
148 rep[1] = c;
149 }
150
151 dim_vector (octave_idx_type r, octave_idx_type c, octave_idx_type p)
152 : rep (newrep (3))
153 {
154 rep[0] = r;
155 rep[1] = c;
156 rep[2] = p;
157 }
158
159 #define ASSIGN_REP(i) rep[i] = d ## i; 158 #define ASSIGN_REP(i) rep[i] = d ## i;
160 #define DIM_VECTOR_CTOR(N) \ 159 #define DIM_VECTOR_CTOR(N) \
161 dim_vector (OCT_MAKE_DECL_LIST(octave_idx_type, d, N)) \ 160 dim_vector (OCT_MAKE_DECL_LIST (octave_idx_type, d, N)) \
162 : rep (newrep (N)) \ 161 : rep (newrep (N)) \
163 { \ 162 { \
164 OCT_ITERATE_MACRO(ASSIGN_REP, N) \ 163 OCT_ITERATE_MACRO (ASSIGN_REP, N) \
165 } 164 }
166 165
167 // Add more if needed. 166 // Add more if needed.
168 DIM_VECTOR_CTOR(4) 167 DIM_VECTOR_CTOR (2)
169 DIM_VECTOR_CTOR(5) 168 DIM_VECTOR_CTOR (3)
170 DIM_VECTOR_CTOR(6) 169 DIM_VECTOR_CTOR (4)
171 DIM_VECTOR_CTOR(7) 170 DIM_VECTOR_CTOR (5)
171 DIM_VECTOR_CTOR (6)
172 DIM_VECTOR_CTOR (7)
172 173
173 #undef ASSIGN_REP 174 #undef ASSIGN_REP
174 #undef DIM_VECTOR_CTOR 175 #undef DIM_VECTOR_CTOR
175 176
176 dim_vector (const octave_idx_type *vec, size_t vec_size) 177 dim_vector (const octave_idx_type *vec, size_t vec_size)