UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
CubeStorage.H
1 /* CubeStorage.H */
2 /* $Id: CubeStorage.H,v 1.13 2008/04/11 11:49:38 vlad Exp $ */
3 #ifndef __CubeStorage_H
4 #define __CubeStorage_H
5 
6 #include <errno.h>
7 #include <fcntl.h>
8 #include <unistd.h>
9 #include <stdio.h>
10 #include <string.h>
11 #include <stdlib.h>
12 #include <stdarg.h>
13 #include <sys/stat.h>
14 #include <sys/types.h>
15 
16 #ifndef GEVSP
17 #include <mix/Exceptions.h>
18 #include <mix/Types.h>
19 #else
20 /* Replacement for UNIVERS exceptions stuff */
21 
22 #define Throw(x) fprintf(stderr,"%s:%d: %s\n",__FILE__, __LINE__,x),abort()
23 #define ERROR__NON_POSITIVE_NUMBER "ERROR__NON_POSITIVE_NUMBER"
24 #define ERROR__DA_OUT_OF_RANGE "ERROR__DA_OUT_OF_RANGE"
25 #define ERROR__NULL "ERROR__NULL"
26 #define ERROR__MISMATCH "ERROR__MISMATCH"
27 
28 #endif /* GEVSP */
29 
30 #include "cust_defs.h"
31 
32 
33 /*
34 
35  #define CuSt_AtomItem if you are sure the T is atomic type (int,
36  float, char, pointer etc) to be printable by passing to fprintf(...)
37 
38  */
39 
40 
47 template <class T>
49 {
50 public:
51 
52  CubeStorage (int nR, int nC,
53  item_order_t itor = AlaC);
54  CubeStorage (int dim_n, int* dims,
55  item_order_t itor = AlaC);
56  CubeStorage (const CubeStorage& cs,
57  item_order_t itor = AlaC);
58 
59  virtual ~CubeStorage ();
60 
61 
62  CubeStorage& operator= (const CubeStorage& cs);
63 
64 
65  int dim_number () const;
66  int dim (int dim_i) const;
67  void new_size (int dim_n, int* dims,
68  item_order_t itor = AlaC);
69  int lin_index (int i0, ...) const;
70  int lin_index (int* i) const;
71  int items_number (int dim_n, int* dims) const;
72 
73  T& fetch (int* i);
74  T& fetch (int i0, ...);
75  T get (int* i) const;
76  T get (int i0, ...) const;
77 
78  T& operator() (int* i);
79  T& operator() (int i0, ...);
80 
82  T* c () const;
83 
85  T* f () const;
86 
88  void clean ();
89 
91  void fill (T v);
92 
93  virtual void print_info () const;
94  virtual void print_index (int* i) const;
95 
97  virtual void print_direction (FILE* fp, const char* format);
98 
99  /* Dummy methods in case of CuSt_AtomItem is undefined */
100  virtual void print_cell (int* i) const;
101  virtual void print_vector (int d, int* i) const;
102  virtual void print_matrix (int dv, int dh, int* i) const;
103 
104 #ifndef GEVSP
105 
106  virtual void stream_dir (const char* dir);
107 
109  const char* stream_dir () const;
110 
112  virtual void stream_put (int ii);
113 
115  virtual void stream_get (int ii);
116 #endif /* GEVSP */
117 
118 private:
119 
120  item_order_t eItemOrder;
121  T *pStorage;
122  int nDim;
123  int *pDim;
125  /* print setup */
126  FILE *fpLog;
127  char *szFormat;
128 
130  char *szStreamDir;
131 
132 #ifndef GEVSP
133 
134  void stream_put_header (int fildes);
135 
137  void stream_get_header (int fildes);
138 #endif /* GEVSP */
139 
140 };
141 
142 
143 #include "cust_lifetime.H"
144 #include "cust_putget.H"
145 #include "cust_print.H"
146 #include "cust_info.H"
147 #ifndef GEVSP
148 #include "cust_stream.H"
149 #endif /* GEVSP */
150 #include "cust_other.H"
151 
152 
153 #endif /* CubeStorage.H */
Definition: CubeStorage.H:48
void clean()
void fill(T v)
virtual void print_direction(FILE *fp, const char *format)
virtual void stream_put(int ii)
Definition: cust_stream.H:47
const char * stream_dir() const
Definition: cust_stream.H:36
virtual void stream_get(int ii)
Definition: cust_stream.H:86
T * c() const
T * f() const