UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
cust_putget.H
1 /* cust_putget.H */
2 /* $Id: cust_putget.H,v 1.4 2007/02/28 14:14:15 vlad Exp $ */
3 #ifdef __CubeStorage_H
4 
5 
6 /***********************************************************************
7  * Fetch given item.
8  */
9 template<class T>
10 T&
11 CubeStorage<T>::fetch (int i0, ...)
12 {
13  int dim_i;
14  int *iCur = (int*) alloca(nDim);
15 
16  /* Translate int i0, ... to iCur[nDim] */
17  iCur[0] = i0;
18  va_list val;
19  va_start(val, i0);
20  for(dim_i = 1; dim_i < nDim; ++dim_i)
21  iCur[dim_i] = va_arg(val, int);
22  va_end(val);
23 
24  return fetch(iCur);
25 }
26 
27 
28 /***********************************************************************
29  * Fetch given item.
30  */
31 template<class T>
32 inline T&
33 CubeStorage<T>::fetch (int* i)
34 {
35  return pStorage[lin_index(i)];
36 }
37 
38 
39 /***********************************************************************
40  * Fetch given item.
41  */
42 template<class T>
43 T&
44 CubeStorage<T>::operator() (int i0, ...)
45 {
46  int dim_i;
47  int *iCur = (int*) alloca(nDim);
48 
49  /* Translate int i0, ... to iCur[nDim] */
50  iCur[0] = i0;
51  va_list val;
52  va_start(val, i0);
53  for(dim_i = 1; dim_i < nDim; ++dim_i)
54  iCur[dim_i] = va_arg(val, int);
55  va_end(val);
56 
57  return fetch(iCur);
58 }
59 
60 
61 /***********************************************************************
62  * Fetch given item.
63  */
64 template<class T>
65 inline T&
67 {
68  return fetch(i);
69 }
70 
71 
72 /***********************************************************************
73  * Get given item.
74  */
75 template<class T>
76 T
77 CubeStorage<T>::get (int i0, ...) const
78 {
79  int dim_i;
80  int *iCur = (int*) alloca(nDim);
81 
82  /* Translate int i0, ... to iCur[nDim] */
83  iCur[0] = i0;
84  va_list val;
85  va_start(val, i0);
86  for(dim_i = 1; dim_i < nDim; ++dim_i)
87  iCur[dim_i] = va_arg(val, int);
88  va_end(val);
89 
90  return get(iCur);
91 }
92 
93 
94 /***********************************************************************
95  * Get given item.
96  */
97 template<class T>
98 inline T
99 CubeStorage<T>::get (int* i) const
100 {
101  return pStorage[lin_index(i)];
102 }
103 
104 
105 /***********************************************************************
106  * Get pointer for C/C++.
107  */
108 template<class T>
109 inline T*
110 CubeStorage<T>::c () const
111 {
112  if(AlaC != eItemOrder)
113  Throw(ERROR__MISMATCH);
114  return pStorage;
115 }
116 
117 
118 /***********************************************************************
119  * Get pointer for Fortran.
120  */
121 template<class T>
122 inline T*
123 CubeStorage<T>::f () const
124 {
125  if(AlaFortran != eItemOrder)
126  Throw(ERROR__MISMATCH);
127  return pStorage;
128 }
129 
130 
131 #endif /* cust_putget.H */
Definition: CubeStorage.H:48
T * c() const
T * f() const