00001 #ifndef __FIBER_GRID_SKELETON_HPP
00002 #define __FIBER_GRID_SKELETON_HPP "Created 27.02.2001 21:42:27 by werner"
00003
00004 #include "GridAPI.h"
00005 #include <field/Field.hpp>
00006 #include <memcore/TypeInfo.hpp>
00007 #include <set>
00008 #include <list>
00009
00010 #include "FieldID.hpp"
00011 #include "BaseSpace.hpp"
00012 #include "FiberSpace.hpp"
00013 #include "Transformation.hpp"
00014 #include "Representation.hpp"
00015 #include "Chart.hpp"
00016 #include "Atlas.hpp"
00017 #include "GridContainer.hpp"
00018
00019 namespace Fiber
00020 {
00021 using MemCore::WeakPtr;
00022 using MemCore::NullPtr;
00023 using std::set;
00024 using std::list;
00025
00026
00027 class GRID_API FieldRef;
00028
00037 class GRID_API Skeleton : public BaseSpace, public RepresentationMap
00038 {
00039 WeakPtr<GridContainer> myContainer;
00040
00041 public:
00042
00044 Skeleton (const WeakPtr<GridContainer>&C);
00045
00047 ~Skeleton();
00048
00049 using RepresentationMap::operator[];
00050 using RepresentationMap::makeRepresentation;
00051 using RepresentationMap::operator();
00052 using RepresentationMap::size;
00053 using RepresentationMap::Iterator;
00054 using RepresentationMap::iterate;
00055
00056
00057
00058
00059
00061
00062
00063
00064
00065
00066
00067
00068
00070
00071
00073
00074
00075
00079
00080
00090 RefPtr<Representation> UniqueRepresentation() const;
00091
00100 RefPtr<Representation> FirstRepresentation() const;
00101
00102 override int Dims() const;
00103
00109 RefPtr<SizeInterface> getSize() const;
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127 };
00128
00129 typedef Skeleton Topology;
00130
00132 typedef RefPtr<Skeleton> pSkeleton;
00133
00135 typedef WeakPtr<Skeleton> wSkeleton;
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00160 class GRID_API FieldRef
00161 {
00162 RefPtr<Skeleton> SkelPtr;
00163 RefPtr<FieldID> Id;
00164 RefPtr<Atlas> myGridAtlas;
00165 string fieldname;
00166
00167 public:
00168 FieldRef(const RefPtr<Skeleton>&S, const RefPtr<FieldID>&fid, const RefPtr<Atlas>&GA)
00169 : SkelPtr(S), Id(fid), myGridAtlas(GA)
00170 {}
00171
00172 FieldRef(const RefPtr<Skeleton>&S, const string&fname, const RefPtr<Atlas>&GA)
00173 : SkelPtr(S), myGridAtlas(GA), fieldname(fname)
00174 {}
00175
00176 ~FieldRef();
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205 #if 0
00206
00212 bool operator=(const double&Value)
00213 {
00214 typedef double value_type;
00215 typedef MemArrayStorage<1, value_type, vector<value_type> > array_type;
00216
00217 array_type*Data = new array_type( MIndex(1) );
00218 Data->myArray()[0] = Value;
00219
00220 RefPtr<Representation> Rep = SkelPtr->DefaultRepresentation();
00221 if (!Rep)
00222 return false;
00223
00224 RefPtr<Field> myField = new Field();
00225 myField->setCreator( new MemCreativeArray(Data) );
00226
00227 if (!Id)
00228 {
00229 FieldID&Fid = (*Rep)[fieldname];
00230 Id = &Fid;
00231 }
00232
00233 (*Rep)[ Id ] = myField;
00234
00235 return true;
00236 }
00237 #endif
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270 };
00271
00272 }
00273
00274 #endif