traits.hpp
Go to the documentation of this file.
1 // Copyright (C) 2008-2011 NICTA (www.nicta.com.au)
2 // Copyright (C) 2008-2011 Conrad Sanderson
3 //
4 // This file is part of the Armadillo C++ library.
5 // It is provided without any warranty of fitness
6 // for any purpose. You can redistribute this file
7 // and/or modify it under the terms of the GNU
8 // Lesser General Public License (LGPL) as published
9 // by the Free Software Foundation, either version 3
10 // of the License or (at your option) any later version.
11 // (see http://www.opensource.org/licenses for more info)
12 
13 
16 
17 
18 template<typename T1>
20  { typedef T1 result; };
21 
22 template<typename T2>
23 struct get_pod_type< std::complex<T2> >
24  { typedef T2 result; };
25 
26 
27 
28 template<typename T>
30  { static const bool value = false; };
31 
32 template<typename eT>
33 struct is_Mat_only< Mat<eT> >
34  { static const bool value = true; };
35 
36 
37 
38 template<typename T>
39 struct is_Mat
40  { static const bool value = false; };
41 
42 template<typename eT>
43 struct is_Mat< Mat<eT> >
44  { static const bool value = true; };
45 
46 template<typename eT>
47 struct is_Mat< Row<eT> >
48  { static const bool value = true; };
49 
50 template<typename eT>
51 struct is_Mat< Col<eT> >
52  { static const bool value = true; };
53 
54 
55 
56 template<typename T>
57 struct is_Row
58  { static const bool value = false; };
59 
60 template<typename eT>
61 struct is_Row< Row<eT> >
62  { static const bool value = true; };
63 
64 
65 
66 template<typename T>
67 struct is_Col
68  { static const bool value = false; };
69 
70 template<typename eT>
71 struct is_Col< Col<eT> >
72  { static const bool value = true; };
73 
74 
75 
76 
77 
78 
79 template<typename T>
80 struct is_subview
81  { static const bool value = false; };
82 
83 template<typename eT>
84 struct is_subview< subview<eT> >
85  { static const bool value = true; };
86 
87 
88 template<typename T>
90  { static const bool value = false; };
91 
92 template<typename eT>
93 struct is_diagview< diagview<eT> >
94  { static const bool value = true; };
95 
96 
97 //
98 //
99 //
100 
101 
102 
103 template<typename T>
104 struct is_Cube
105  { static const bool value = false; };
106 
107 template<typename eT>
108 struct is_Cube< Cube<eT> >
109  { static const bool value = true; };
110 
111 template<typename T>
113  { static const bool value = false; };
114 
115 template<typename eT>
117  { static const bool value = true; };
118 
119 
120 
121 //
122 //
123 //
124 
125 
126 template<typename T>
127 struct is_Gen
128  { static const bool value = false; };
129 
130 template<typename eT, typename gen_type>
131 struct is_Gen< Gen<eT,gen_type> >
132  { static const bool value = true; };
133 
134 
135 template<typename T>
136 struct is_Op
137  { static const bool value = false; };
138 
139 template<typename T1, typename op_type>
140 struct is_Op< Op<T1,op_type> >
141  { static const bool value = true; };
142 
143 
144 template<typename T>
145 struct is_eOp
146  { static const bool value = false; };
147 
148 template<typename T1, typename eop_type>
149 struct is_eOp< eOp<T1,eop_type> >
150  { static const bool value = true; };
151 
152 
153 template<typename T>
154 struct is_mtOp
155  { static const bool value = false; };
156 
157 template<typename eT, typename T1, typename op_type>
158 struct is_mtOp< mtOp<eT, T1, op_type> >
159  { static const bool value = true; };
160 
161 
162 template<typename T>
163 struct is_Glue
164  { static const bool value = false; };
165 
166 template<typename T1, typename T2, typename glue_type>
167 struct is_Glue< Glue<T1,T2,glue_type> >
168  { static const bool value = true; };
169 
170 
171 template<typename T>
172 struct is_eGlue
173  { static const bool value = false; };
174 
175 template<typename T1, typename T2, typename eglue_type>
176 struct is_eGlue< eGlue<T1,T2,eglue_type> >
177  { static const bool value = true; };
178 
179 
180 template<typename T>
181 struct is_mtGlue
182  { static const bool value = false; };
183 
184 template<typename eT, typename T1, typename T2, typename glue_type>
185 struct is_mtGlue< mtGlue<eT, T1, T2, glue_type> >
186  { static const bool value = true; };
187 
188 
189 //
190 //
191 
192 
193 template<typename T>
195  { static const bool value = false; };
196 
197 template<typename T1, typename T2>
198 struct is_glue_times< Glue<T1,T2,glue_times> >
199  { static const bool value = true; };
200 
201 
202 template<typename T>
204  { static const bool value = false; };
205 
206 template<typename T1, typename T2>
208  { static const bool value = true; };
209 
210 
211 template<typename T>
213  { static const bool value = false; };
214 
215 template<typename T1>
217  { static const bool value = true; };
218 
219 
220 //
221 //
222 
223 
224 template<typename T>
226  { static const bool value = false; };
227 
228 template<typename eT, typename gen_type>
229 struct is_GenCube< GenCube<eT,gen_type> >
230  { static const bool value = true; };
231 
232 
233 template<typename T>
234 struct is_OpCube
235  { static const bool value = false; };
236 
237 template<typename T1, typename op_type>
238 struct is_OpCube< OpCube<T1,op_type> >
239  { static const bool value = true; };
240 
241 
242 template<typename T>
244  { static const bool value = false; };
245 
246 template<typename T1, typename eop_type>
247 struct is_eOpCube< eOpCube<T1,eop_type> >
248  { static const bool value = true; };
249 
250 
251 template<typename T>
253  { static const bool value = false; };
254 
255 template<typename eT, typename T1, typename op_type>
256 struct is_mtOpCube< mtOpCube<eT, T1, op_type> >
257  { static const bool value = true; };
258 
259 
260 template<typename T>
262  { static const bool value = false; };
263 
264 template<typename T1, typename T2, typename glue_type>
265 struct is_GlueCube< GlueCube<T1,T2,glue_type> >
266  { static const bool value = true; };
267 
268 
269 template<typename T>
271  { static const bool value = false; };
272 
273 template<typename T1, typename T2, typename eglue_type>
274 struct is_eGlueCube< eGlueCube<T1,T2,eglue_type> >
275  { static const bool value = true; };
276 
277 
278 template<typename T>
280  { static const bool value = false; };
281 
282 template<typename eT, typename T1, typename T2, typename glue_type>
283 struct is_mtGlueCube< mtGlueCube<eT, T1, T2, glue_type> >
284  { static const bool value = true; };
285 
286 
287 //
288 //
289 //
290 
291 
292 template<typename T>
293 struct is_op_rel
294  { static const bool value = false; };
295 
296 template<typename out_eT, typename T1>
297 struct is_op_rel< mtOp<out_eT, T1, op_rel_lt_pre> >
298  { static const bool value = true; };
299 
300 template<typename out_eT, typename T1>
301 struct is_op_rel< mtOp<out_eT, T1, op_rel_lt_post> >
302  { static const bool value = true; };
303 
304 template<typename out_eT, typename T1>
305 struct is_op_rel< mtOp<out_eT, T1, op_rel_gt_pre> >
306  { static const bool value = true; };
307 
308 template<typename out_eT, typename T1>
309 struct is_op_rel< mtOp<out_eT, T1, op_rel_gt_post> >
310  { static const bool value = true; };
311 
312 template<typename out_eT, typename T1>
313 struct is_op_rel< mtOp<out_eT, T1, op_rel_lteq_pre> >
314  { static const bool value = true; };
315 
316 template<typename out_eT, typename T1>
317 struct is_op_rel< mtOp<out_eT, T1, op_rel_lteq_post> >
318  { static const bool value = true; };
319 
320 template<typename out_eT, typename T1>
321 struct is_op_rel< mtOp<out_eT, T1, op_rel_gteq_pre> >
322  { static const bool value = true; };
323 
324 template<typename out_eT, typename T1>
325 struct is_op_rel< mtOp<out_eT, T1, op_rel_gteq_post> >
326  { static const bool value = true; };
327 
328 template<typename out_eT, typename T1>
329 struct is_op_rel< mtOp<out_eT, T1, op_rel_eq> >
330  { static const bool value = true; };
331 
332 template<typename out_eT, typename T1>
333 struct is_op_rel< mtOp<out_eT, T1, op_rel_noteq> >
334  { static const bool value = true; };
335 
336 
337 
338 //
339 //
340 //
341 
342 
343 
344 template<typename T1>
346  {
347  static const bool value
358  ;
359  };
360 
361 
362 
363 template<typename T1>
365  {
366  static const bool value
376  ;
377  };
378 
379 
380 
381 //
382 //
383 //
384 
385 
386 template<typename T1, typename T2>
388  { static const bool value = false; };
389 
390 
391 template<typename T1>
392 struct is_same_type<T1,T1>
393  { static const bool value = true; };
394 
395 
396 
397 //
398 //
399 //
400 
401 
402 template<typename T1>
403 struct is_u8
404  { static const bool value = false; };
405 
406 template<>
407 struct is_u8<u8>
408  { static const bool value = true; };
409 
410 
411 
412 template<typename T1>
413 struct is_s8
414  { static const bool value = false; };
415 
416 template<>
417 struct is_s8<s8>
418  { static const bool value = true; };
419 
420 
421 
422 template<typename T1>
423 struct is_u16
424  { static const bool value = false; };
425 
426 template<>
427 struct is_u16<u16>
428  { static const bool value = true; };
429 
430 
431 
432 template<typename T1>
433 struct is_s16
434  { static const bool value = false; };
435 
436 template<>
437 struct is_s16<s16>
438  { static const bool value = true; };
439 
440 
441 
442 template<typename T1>
443 struct is_u32
444  { static const bool value = false; };
445 
446 template<>
447 struct is_u32<u32>
448  { static const bool value = true; };
449 
450 
451 
452 template<typename T1>
453 struct is_s32
454  { static const bool value = false; };
455 
456 template<>
457 struct is_s32<s32>
458  { static const bool value = true; };
459 
460 
461 
462 #if defined(ARMA_64BIT_WORD)
463  template<typename T1>
464  struct is_u64
465  { static const bool value = false; };
466 
467  template<>
468  struct is_u64<u64>
469  { static const bool value = true; };
470 
471 
472  template<typename T1>
473  struct is_s64
474  { static const bool value = false; };
475 
476  template<>
477  struct is_s64<s64>
478  { static const bool value = true; };
479 #endif
480 
481 
482 
483 template<typename T1>
484 struct is_uword
485  { static const bool value = false; };
486 
487 template<>
489  { static const bool value = true; };
490 
491 
492 
493 template<typename T1>
494 struct is_sword
495  { static const bool value = false; };
496 
497 template<>
499  { static const bool value = true; };
500 
501 
502 
503 template<typename T1>
504 struct is_float
505  { static const bool value = false; };
506 
507 template<>
508 struct is_float<float>
509  { static const bool value = true; };
510 
511 
512 
513 template<typename T1>
514 struct is_double
515  { static const bool value = false; };
516 
517 template<>
518 struct is_double<double>
519  { static const bool value = true; };
520 
521 
522 
523 template<typename T1>
525  { static const bool value = false; };
526 
527 // template<>
528 template<typename eT>
529 struct is_complex< std::complex<eT> >
530  { static const bool value = true; };
531 
532 
533 
534 template<typename T1>
536  { static const bool value = false; };
537 
538 template<>
539 struct is_complex_float< std::complex<float> >
540  { static const bool value = true; };
541 
542 
543 
544 template<typename T1>
546  { static const bool value = false; };
547 
548 template<>
549 struct is_complex_double< std::complex<double> >
550  { static const bool value = true; };
551 
552 
553 
554 
556 template<typename T1>
558  { static const bool value = false; };
559 
560 //template<>
561 template<typename eT>
562 struct is_supported_complex< std::complex<eT> >
563  { static const bool value = ( sizeof(std::complex<eT>) == 2*sizeof(eT) ); };
564 
565 
566 
567 template<typename T1>
569  { static const bool value = false; };
570 
571 template<>
572 struct is_supported_complex_float< std::complex<float> >
573  { static const bool value = ( sizeof(std::complex<float>) == 2*sizeof(float) ); };
574 
575 
576 
577 template<typename T1>
579  { static const bool value = false; };
580 
581 template<>
582 struct is_supported_complex_double< std::complex<double> >
583  { static const bool value = ( sizeof(std::complex<double>) == 2*sizeof(double) ); };
584 
585 
586 
587 template<typename T1>
589  {
590  static const bool value = \
597 #if defined(ARMA_64BIT_WORD)
598  is_u64<T1>::value ||
599  is_s64<T1>::value ||
600 #endif
605  };
606 
607 
608 
609 template<typename T1>
611  {
612  static const bool value = \
617  };
618 
619 
620 
621 template<typename T>
622 struct is_signed
623  {
624  static const bool value = true;
625  };
626 
627 
628 template<> struct is_signed<u8> { static const bool value = false; };
629 template<> struct is_signed<u16> { static const bool value = false; };
630 template<> struct is_signed<u32> { static const bool value = false; };
631 #if defined(ARMA_64BIT_WORD)
632 template<> struct is_signed<u64> { static const bool value = false; };
633 #endif
634 
635 
636 template<typename T>
638  {
639  static const bool value = false;
640  };
641 
642 
643 template<> struct is_non_integral< float > { static const bool value = true; };
644 template<> struct is_non_integral< double > { static const bool value = true; };
645 template<> struct is_non_integral< std::complex<float> > { static const bool value = true; };
646 template<> struct is_non_integral< std::complex<double> > { static const bool value = true; };
647 
648 
649 
650 
651 //
652 
653 class arma_junk_class;
654 
655 template<typename T1, typename T2>
657  {
658  typedef T1 T1_result;
659  typedef T2 T2_result;
660  };
661 
662 
663 template<typename T1>
664 struct force_different_type<T1,T1>
665  {
666  typedef T1 T1_result;
667  typedef arma_junk_class T2_result;
668  };
669 
670 
671 
support class for generator functions (eg. zeros, randu, randn, ...)
Class which implements the immediate multiplication of two or more matrices.
static const bool value
Definition: traits.hpp:404
support class for generator functions (eg. zeros, randu, randn, ...)
static const bool value
Definition: traits.hpp:505
u32 uword
Definition: typedef.hpp:85
Class for column vectors (matrices with only one column)
Definition: Col_bones.hpp:20
Dense cube class.
Definition: Cube_bones.hpp:30
Class for row vectors (matrices with only one row)
Analog of the Op class, intended for cubes.
arma_junk_class T2_result
Definition: traits.hpp:667
Dense matrix class.
check for a weird implementation of the std::complex class
Definition: traits.hpp:557
Class for storing data required to extract and set the diagonals of a matrix.
s32 sword
Definition: typedef.hpp:86
analog of the Glue class, intended for Cube objects


armadillo_matrix
Author(s):
autogenerated on Fri Apr 16 2021 02:31:59