itpp_sci  1.0.0
it++ based simulation framework for scicoslab, scilab and scipy
_sci_var.hpp
1 /*xxx
2 * \brief - definition of scilab sci_var class and derived classes
3 * \author maki
4 */
5 
6 #ifndef SCI_SCI_VAR_HPP
7 #define SCI_SCI_VAR_HPP
8 
9 // ---- ITPP ----
10 #include "itpp\itbase.h"
11 #include "sci\_sci_types.h"
12 
13 using namespace std;
14 using namespace itpp;
15 
16 namespace SCI
17 {
18 
23 class sci_var
24 {
25 public:
26 
27  virtual ~sci_var(void)
28  {
29  };
30 
31  virtual int get_sci_type() = 0;
32  virtual int get_rows() = 0;
33  virtual int get_cols() = 0;
34 
35  virtual bool get_bool() = 0;
36  virtual bvec get_bvec() = 0;
37  virtual bmat get_bmat() = 0;
38 
39  virtual int get_int() = 0;
40  virtual ivec get_ivec() = 0;
41  virtual imat get_imat() = 0;
42 
43  virtual double get_double() = 0;
44  virtual vec get_vec() = 0;
45  virtual mat get_mat() = 0;
46 
47  virtual complex<double> get_complex() = 0;
48  virtual cvec get_cvec() = 0;
49  virtual cmat get_cmat() = 0;
50 };
51 
54 class sci_var_double : public sci_var
55 {
56 
57 public:
58  double v;
59 
60  sci_var_double()
61  {
62  return;
63  };
64 
65  sci_var_double(double x)
66  {
67  v = x;
68  return;
69  };
70 
71  virtual ~sci_var_double(void)
72  {
73  };
74 
75  virtual int get_sci_type()
76  {
77  return SCI_TYPE_DOUBLE;
78  }
79 
80  int get_rows()
81  {
82  return (1);
83  }
84 
85  int get_cols()
86  {
87  return (1);
88  }
89 
90 
91  // default
92  virtual double get_double();
93  // available if defined(SCI_FLEX)
94  virtual int get_int();
95  virtual bool get_bool();
96 
97  // not available
98  virtual vec get_vec();
99  virtual bvec get_bvec();
100  virtual ivec get_ivec();
101  virtual cvec get_cvec();
102 
103  virtual mat get_mat();
104  virtual imat get_imat();
105  virtual bmat get_bmat();
106  virtual complex<double> get_complex();
107  virtual cmat get_cmat();
108 
109 };
110 
111 class sci_var_int : public sci_var
112 {
113 
114 public:
115  int v;
116 
117  sci_var_int()
118  {
119  return;
120  };
121 
122  sci_var_int(int x)
123  {
124  v = x;
125  return;
126  };
127 
128  virtual ~sci_var_int(void)
129  {
130  };
131 
132  virtual int get_sci_type()
133  {
134  return SCI_TYPE_INT;
135  }
136 
137  int get_rows()
138  {
139  return (1);
140  }
141 
142  int get_cols()
143  {
144  return (1);
145  }
146 
147  // default
148  virtual int get_int();
149 
150  // available if defined(SCI_FLEX)
151  virtual bool get_bool();
152 
153  // not available
154  virtual double get_double();
155  virtual complex<double> get_complex();
156 
157  virtual vec get_vec();
158  virtual bvec get_bvec();
159  virtual ivec get_ivec();
160  virtual cvec get_cvec();
161 
162  virtual mat get_mat();
163  virtual imat get_imat();
164  virtual bmat get_bmat();
165  virtual cmat get_cmat();
166 
167 };
168 
169 
170 class sci_var_bool : public sci_var
171 {
172 
173 public:
174  bool v;
175 
176  sci_var_bool()
177  {
178  return;
179  };
180 
181  sci_var_bool(bool x)
182  {
183  v = x;
184  return;
185  };
186 
187  virtual ~sci_var_bool(void)
188  {
189  };
190 
191  virtual int get_sci_type()
192  {
193  return SCI_TYPE_BOOL;
194  }
195 
196  int get_rows()
197  {
198  return (1);
199  }
200 
201  int get_cols()
202  {
203  return (1);
204  }
205 
206  // default
207  virtual bool get_bool();
208 
209  // available if defined(SCI_FLEX)
210 
211  // not available
212  virtual double get_double();
213  virtual int get_int();
214  virtual complex<double> get_complex();
215 
216  virtual vec get_vec();
217  virtual bvec get_bvec();
218  virtual ivec get_ivec();
219  virtual cvec get_cvec();
220 
221  virtual mat get_mat();
222  virtual imat get_imat();
223  virtual bmat get_bmat();
224  virtual cmat get_cmat();
225 
226 };
227 
228 class sci_var_complex : public sci_var
229 {
230 
231 public:
232  complex<double> v;
233 
234  sci_var_complex()
235  {
236  return;
237  };
238 
239  sci_var_complex(complex<double> x)
240  {
241  v = x;
242  return;
243  };
244 
245  virtual ~sci_var_complex(void)
246  {
247  };
248 
249  virtual int get_sci_type()
250  {
251  return SCI_TYPE_COMPLEX;
252  }
253 
254  int get_rows()
255  {
256  return (1);
257  }
258 
259  int get_cols()
260  {
261  return (1);
262  }
263 
264  // default
265  virtual complex<double> get_complex();
266  // available if defined(SCI_FLEX)
267 
268  // not available
269  virtual double get_double();
270  virtual int get_int();
271  virtual bool get_bool();
272 
273  virtual vec get_vec();
274  virtual bvec get_bvec();
275  virtual ivec get_ivec();
276  virtual cvec get_cvec();
277 
278  virtual mat get_mat();
279  virtual imat get_imat();
280  virtual bmat get_bmat();
281  virtual cmat get_cmat();
282 
283 };
284 
285 class sci_var_vec: public sci_var
286 {
287 
288 public:
289  vec v;
290 
291  sci_var_vec()
292  {
293  return;
294  };
295 
296  sci_var_vec(vec vector)
297  {
298  v = vector;
299  return;
300  };
301 
302  virtual ~sci_var_vec(void)
303  {
304  };
305 
306  virtual int get_sci_type()
307  {
308  return SCI_TYPE_VEC;
309  }
310 
311  int get_rows()
312  {
313  return (v.length());
314  }
315 
316  int get_cols()
317  {
318  return (1);
319  }
320 
321  // default
322  virtual double get_double();
323  virtual vec get_vec();
324  // available if defined(SCI_FLEX)
325  virtual bool get_bool();
326  virtual bvec get_bvec();
327  virtual int get_int();
328  virtual ivec get_ivec();
329  // not available
330  virtual mat get_mat();
331  virtual imat get_imat();
332  virtual bmat get_bmat();
333  virtual complex<double> get_complex();
334  virtual cvec get_cvec();
335  virtual cmat get_cmat();
336 
337 };
338 
339 class sci_var_mat: public sci_var
340 {
341 public:
342  mat v;
343 
344  sci_var_mat()
345  {
346  return;
347  };
348 
349  sci_var_mat(mat matrix)
350  {
351  v = matrix;
352  return;
353  };
354 
355  virtual ~sci_var_mat(void)
356  {
357  };
358 
359  virtual int get_sci_type()
360  {
361  return SCI_TYPE_MAT;
362  }
363 
364  int get_rows()
365  {
366  return (v.rows());
367  }
368 
369  int get_cols()
370  {
371  return (v.cols());
372  }
373 
374  // default
375  virtual double get_double();
376  virtual vec get_vec();
377  virtual mat get_mat();
378  // available if defined(SCI_FLEX)
379  virtual bool get_bool();
380  virtual bvec get_bvec();
381  virtual bmat get_bmat();
382  virtual int get_int();
383  virtual ivec get_ivec();
384  virtual imat get_imat();
385  // not available
386  virtual complex<double> get_complex();
387  virtual cvec get_cvec();
388  virtual cmat get_cmat();
389 
390 };
391 
392 class sci_var_ivec: public sci_var
393 {
394 public:
395  itpp::ivec v;
396 
397  sci_var_ivec()
398  {
399  return;
400  };
401 
402  sci_var_ivec(ivec vector)
403  {
404  v = vector;
405  return;
406  };
407 
408  virtual ~sci_var_ivec(void)
409  {
410  };
411 
412  virtual int get_sci_type()
413  {
414  return SCI_TYPE_IVEC;
415  }
416 
417  int get_rows()
418  {
419  return (v.length());
420  }
421 
422  int get_cols()
423  {
424  return (1);
425  }
426 
427  // default
428  virtual int get_int();
429  virtual ivec get_ivec();
430  // available if defined(SCI_FLEX)
431  virtual bool get_bool();
432  virtual bvec get_bvec();
433  // not available
434  virtual bmat get_bmat();
435  virtual imat get_imat();
436  virtual double get_double();
437  virtual vec get_vec();
438  virtual mat get_mat();
439  virtual complex<double> get_complex();
440  virtual cvec get_cvec();
441  virtual cmat get_cmat();
442 
443 };
444 
445 class sci_var_imat: public sci_var
446 {
447 public:
448  itpp::imat v;
449 
450  sci_var_imat()
451  {
452  return;
453  };
454 
455  sci_var_imat(imat matrix)
456  {
457  v = matrix;
458  return;
459  };
460 
461  virtual ~sci_var_imat(void)
462  {
463  };
464 
465  virtual int get_sci_type()
466  {
467  return SCI_TYPE_IMAT;
468  }
469 
470  int get_rows()
471  {
472  return (v.rows());
473  }
474 
475  int get_cols()
476  {
477  return (v.cols());
478  }
479 
480  // default
481  virtual int get_int();
482  virtual ivec get_ivec();
483  virtual imat get_imat();
484  // available if defined(SCI_FLEX)
485  virtual bool get_bool();
486  virtual bvec get_bvec();
487  virtual bmat get_bmat();
488  // not available
489  virtual double get_double();
490  virtual vec get_vec();
491  virtual mat get_mat();
492  virtual complex<double> get_complex();
493  virtual cvec get_cvec();
494  virtual cmat get_cmat();
495 
496 };
497 
498 class sci_var_bvec: public sci_var
499 {
500 public:
501  itpp::bvec v;
502 
503  sci_var_bvec()
504  {
505  return;
506  };
507 
508  sci_var_bvec(bvec vector)
509  {
510  v = vector;
511  return;
512  };
513 
514  virtual ~sci_var_bvec(void)
515  {
516  };
517 
518  virtual int get_sci_type()
519  {
520  return SCI_TYPE_BVEC;
521  }
522 
523  int get_rows()
524  {
525  return (v.length());
526  }
527 
528  int get_cols()
529  {
530  return (1);
531  }
532 
533  // default
534  virtual bool get_bool();
535  virtual bvec get_bvec();
536 
537  // not available
538  virtual bmat get_bmat();
539  virtual int get_int();
540  virtual ivec get_ivec();
541  virtual imat get_imat();
542  virtual double get_double();
543  virtual vec get_vec();
544  virtual mat get_mat();
545  virtual complex<double> get_complex();
546  virtual cvec get_cvec();
547  virtual cmat get_cmat();
548 
549 
550 };
551 
552 class sci_var_bmat: public sci_var
553 {
554 public:
555  itpp::bmat v;
556 
557  sci_var_bmat()
558  {
559  return;
560  };
561 
562  sci_var_bmat(bmat matrix)
563  {
564  v = matrix;
565  return;
566  };
567 
568  virtual ~sci_var_bmat(void)
569  {
570  };
571 
572  virtual int get_sci_type()
573  {
574  return SCI_TYPE_BMAT;
575  }
576 
577  int get_rows()
578  {
579  return (v.rows());
580  }
581 
582  int get_cols()
583  {
584  return (v.cols());
585  }
586 
587 
588  // default
589  virtual bool get_bool();
590  virtual bvec get_bvec();
591  virtual bmat get_bmat();
592 
593  // not available
594  virtual int get_int();
595  virtual ivec get_ivec();
596  virtual imat get_imat();
597 
598  virtual double get_double();
599  virtual vec get_vec();
600  virtual mat get_mat();
601 
602  virtual complex<double> get_complex();
603  virtual cvec get_cvec();
604  virtual cmat get_cmat();
605 
606 };
607 
608 class sci_var_cvec: public sci_var
609 {
610 public:
611  itpp::cvec v;
612 
613  sci_var_cvec()
614  {
615  return;
616  };
617 
618  sci_var_cvec(cvec vector)
619  {
620  v = vector;
621  return;
622  };
623 
624  virtual ~sci_var_cvec(void)
625  {
626  };
627 
628  virtual int get_sci_type()
629  {
630  return SCI_TYPE_CVEC;
631  }
632 
633  int get_rows()
634  {
635  return (v.length());
636  }
637 
638  int get_cols()
639  {
640  return (1);
641  }
642 
643  // default
644  virtual complex<double> get_complex();
645  virtual cvec get_cvec();
646 
647  // not available
648  virtual cmat get_cmat();
649  virtual bool get_bool();
650  virtual bvec get_bvec();
651  virtual bmat get_bmat();
652  virtual int get_int();
653  virtual ivec get_ivec();
654  virtual imat get_imat();
655  virtual double get_double();
656  virtual vec get_vec();
657  virtual mat get_mat();
658 
659 };
660 
661 class sci_var_cmat: public sci_var
662 {
663 public:
664  itpp::cmat v;
665 
666  sci_var_cmat()
667  {
668  return;
669  };
670 
671 
672  sci_var_cmat(cmat matrix)
673  {
674  v = matrix;
675  return;
676  };
677 
678  virtual ~sci_var_cmat(void)
679  {
680  };
681 
682  virtual int get_sci_type()
683  {
684  return SCI_TYPE_CMAT;
685  }
686 
687  int get_rows()
688  {
689  return (v.rows());
690  }
691 
692  int get_cols()
693  {
694  return (v.cols());
695  }
696 
697  virtual complex<double> get_complex();
698  virtual cvec get_cvec();
699  virtual cmat get_cmat();
700 
701  virtual bool get_bool();
702  virtual bvec get_bvec();
703  virtual bmat get_bmat();
704 
705  virtual int get_int();
706  virtual ivec get_ivec();
707  virtual imat get_imat();
708 
709  virtual double get_double();
710  virtual vec get_vec();
711  virtual mat get_mat();
712 
713 };
716 
717 }
718 
719 #endif
Definition: _sci_assert.cpp:35
virtual ~sci_var(void)
Definition: _sci_var.hpp:27
SCI layer implements SCI_API interface as wrappers for SIM layer models.
Definition: _sci_create_sci_var.cpp:8
Abstract base for encapsulation of sci_variables.
Definition: _sci_var.hpp:23