1 #ifndef _DATA_STRUCTURE_H_
2 #define _DATA_STRUCTURE_H_
17 // データ領域の入替などを、このクラス自体への代入で済ますために、
18 // オペレータオーバロードが実装されている。
20 DataSpace(const smart_ptr<type::TypeDescripter>& data);
21 DataSpace(const DataSpace& space);
22 virtual ~DataSpace() {}
24 DataSpace& operator=(const DataSpace& space);
25 bool operator==(const DataSpace& space);
26 bool operator!=(const DataSpace& space);
28 type::TypeDescripter& getTypeDescripter();
33 void swap(const DataSpace& space);
35 // データの実体を保持するTypeDescripterのsmart_ptr
36 smart_ptr<type::TypeDescripter> space_;
43 // 各データ実体へのキャストを行うためのインターフェース。
44 // この関数オブジェクトを利用している限り、DataEntityのインターフェースがどうなっているか
48 virtual ~DataCastor() {}
50 const T* operator()(const interpreter::Object& p) {
51 return static_cast<const T*>(
52 p.getSpace()->getEntity()->getAddress());
59 #endif /* _DATA_STRUCTURE_H_ */