UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
RecItem.hpp
1 /* RecItem.hpp */
2 /* $Id: RecItem.hpp,v 1.12 2004/12/10 09:19:08 vlad Exp $ */
3 #ifndef __RecItem_hpp
4 #define __RecItem_hpp
5 
6 #include <mix/Types.h>
7 #include <mix/RecDef.hpp>
8 #include <mix/AnyValue.hpp>
9 
10 
11 /***********************************************************************
12  ** Record with one instance of data.
13  **
14  ** Each field has a cell for storing data. The class allows access
15  ** to each field data in arbitrary ways via AnyValue.
16  ***********************************************************************/
17 
18 class RecList;
19 
20 class RecItem : public RecDef
21 {
22  friend class RecList;
23 
24 public:
25 
28  RecItem (const RecDef& rdef);
29 
31  RecItem (const RecItem& r);
32 
34  RecItem (InputStream& ist);
35 
38  RecItem (RecDef* prdef, void* recdata);
39 
40  /* Attach the record object to another alien data location. BE
41  CAREFUL!!! */
42  void attach (void* recdata);
43 
44 
46  virtual ~RecItem ();
47 
50  RecItem& operator= (const RecItem& r);
51 
52 
53  /*
54  * Access to record data
55  */
56 
59  virtual AnyValue& value (int dmn_i);
60 
61  /* Call the value(n2i(dname)) */
62  AnyValue& value (const char* dname);
63 
66  virtual const AnyValue& get_value (int dmn_i) const;
67 
69  const AnyValue& get_value (const char* dname) const;
70 
73  virtual void get_value (int dmn_i, AnyValue& av) const;
74 
76  void get_value (const char* dname,
77  AnyValue& av) const;
78 
81  virtual void set_value (int dmn_i, const AnyValue& av);
82 
84  void set_value (const char* dname,
85  const AnyValue& av);
86 
87 
90  virtual void set_row_data (const void* row_data);
91 
94  virtual void* get_row_data () const;
95 
98  virtual void copy_row_data (const RecDef& rdef,
99  void* row_data) const;
100 
101 
104  virtual void add_domain (const DomainDef& dmn);
105 
106 
129  virtual void serialize (OutputStream& ost) const;
130 
134  virtual void deserialize (InputStream& ist);
135 
138 protected:
139 
142 
144  void *ptr_rec;
145 
148 
149 };
150 
151 
152 /*
153  * INLINE IMPLEMENTATIONS
154  */
155 
156 inline AnyValue&
157 RecItem::value (const char* dname)
158 {
159  return value(n2i(dname));
160 }
161 
162 
163 inline const AnyValue&
164 RecItem::get_value (const char* dname) const
165 {
166  return get_value(n2i(dname));
167 }
168 
169 
170 inline void
171 RecItem::get_value (const char* dname, AnyValue& av) const
172 {
173  get_value(n2i(dname), av);
174 }
175 
176 
177 inline void
178 RecItem::set_value (const char* dname, const AnyValue& av)
179 {
180  set_value(n2i(dname), av);
181 }
182 
183 
184 #endif /* RecItem.hpp */
virtual void deserialize(InputStream &ist)
virtual void copy_row_data(const RecDef &rdef, void *row_data) const
Definition: AnyValue.hpp:23
Definition: Serial.hpp:22
virtual AnyValue & value(int dmn_i)
Definition: RecList.hpp:17
Definition: RecItem.hpp:20
RecItem & operator=(const RecItem &r)
bool own_memory
Definition: RecItem.hpp:141
RecItem(const RecDef &rdef)
virtual void set_value(int dmn_i, const AnyValue &av)
AnyValue ** av
Definition: RecItem.hpp:147
Definition: DmnDef.h:25
Definition: Serial.hpp:69
virtual void serialize(OutputStream &ost) const
virtual void add_domain(const DomainDef &dmn)
virtual ~RecItem()
virtual void * get_row_data() const
virtual const AnyValue & get_value(int dmn_i) const
int n2i(const char *dname) const
Definition: RecDef.hpp:19
AnyValue ** av
Definition: RecList.hpp:167
virtual void set_row_data(const void *row_data)
void * ptr_rec
Definition: RecItem.hpp:144