00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef VARIABLE_HPP
00021 #define VARIABLE_HPP
00022
00023 #include <ReferenceCounting.hpp>
00024 #include <string>
00025
00033 class Variable
00034 {
00035 public:
00036 enum Type {
00037 domain,
00038 function,
00039 ifstream,
00040 mesh,
00041 ofstream,
00042 real,
00043 scene,
00044 testFuncion,
00045 unknown,
00046 unknownList,
00047 vector3
00048 };
00049
00050 private:
00052 const Variable::Type __type;
00053
00055 const std::string __name;
00056
00057 public:
00058 const Variable::Type& type() const
00059 {
00060 return __type;
00061 }
00062
00063 const std::string& name() const
00064 {
00065 return __name;
00066 }
00067
00068 Variable(const std::string& name,
00069 const Variable::Type& type)
00070 : __type(type),
00071 __name(name)
00072 {
00073 ;
00074 }
00075
00076 Variable(const Variable& v)
00077 : __type(v.__type),
00078 __name(v.__name)
00079 {
00080 ;
00081 }
00082
00083 virtual ~Variable()
00084 {
00085 ;
00086 }
00087 };
00088
00089
00097 class RealExpression;
00098 class RealVariable
00099 : public Variable
00100 {
00101 private:
00102 ReferenceCounting<RealExpression> __expression;
00103
00104 public:
00105 ReferenceCounting<RealExpression> expression() const;
00106
00107 ConstReferenceCounting<RealExpression>
00108 operator=(ReferenceCounting<RealExpression> e);
00109
00110 RealVariable(const std::string& name,
00111 ReferenceCounting<RealExpression> expression);
00112
00113 RealVariable(const RealVariable& rv);
00114
00115 ~RealVariable();
00116 };
00117
00125 class StringExpression;
00126 class StringVariable
00127 : public Variable
00128 {
00129 private:
00130 ReferenceCounting<StringExpression> __expression;
00131
00132 public:
00133 ReferenceCounting<StringExpression> expression() const;
00134
00135 ConstReferenceCounting<StringExpression>
00136 operator=(ReferenceCounting<StringExpression> e);
00137
00138 StringVariable(const std::string& name);
00139
00140 StringVariable(const std::string& name,
00141 ReferenceCounting<StringExpression> expression);
00142
00143 StringVariable(const StringVariable& rv);
00144
00145 ~StringVariable();
00146 };
00147
00155 class Vector3Expression;
00156 class Vector3Variable
00157 : public Variable
00158 {
00159 private:
00160 ReferenceCounting<Vector3Expression> __expression;
00161
00162 public:
00163 ReferenceCounting<Vector3Expression> expression() const;
00164
00165 ConstReferenceCounting<Vector3Expression>
00166 operator=(ReferenceCounting<Vector3Expression> e);
00167
00168 Vector3Variable(const std::string& name,
00169 ReferenceCounting<Vector3Expression> expression);
00170
00171 Vector3Variable(const Vector3Variable& rv);
00172
00173 ~Vector3Variable();
00174 };
00175
00176
00184 class FunctionExpression;
00185 class FunctionVariable
00186 : public Variable
00187 {
00188 private:
00189 ReferenceCounting<FunctionExpression> __expression;
00190
00191
00192 bool __subscribed;
00193
00194 public:
00195
00196 void subscribe()
00197 {
00198 __subscribed = true;
00199 }
00200
00201 void unsubscribe()
00202 {
00203 __subscribed = false;
00204 }
00205
00206 const bool& isSubscribed() const
00207 {
00208 return __subscribed;
00209 }
00210
00211 ReferenceCounting<FunctionExpression> expression() const;
00212
00213 ConstReferenceCounting<FunctionExpression>
00214 operator=(ReferenceCounting<FunctionExpression> e);
00215
00216 FunctionVariable(const std::string& name,
00217 ReferenceCounting<FunctionExpression> expression);
00218
00219 FunctionVariable(const FunctionVariable& rv);
00220
00221 ~FunctionVariable();
00222 };
00223
00231 class TestFunctionVariable
00232 : public Variable
00233 {
00234 public:
00235 TestFunctionVariable(const std::string& name);
00236
00237 TestFunctionVariable(const TestFunctionVariable& rv);
00238
00239 ~TestFunctionVariable();
00240 };
00241
00242
00243
00251 class MeshExpression;
00252 class MeshVariable
00253 : public Variable
00254 {
00255 private:
00256 ReferenceCounting<MeshExpression> __expression;
00257
00258 public:
00259 ReferenceCounting<MeshExpression> expression() const;
00260
00261 ConstReferenceCounting<MeshExpression>
00262 operator=(ReferenceCounting<MeshExpression> e);
00263
00264 MeshVariable(const std::string& name);
00265
00266 MeshVariable(const std::string& name,
00267 ReferenceCounting<MeshExpression> expression);
00268
00269 MeshVariable(const MeshVariable& rv);
00270
00271 ~MeshVariable();
00272 };
00273
00281 class SceneExpression;
00282 class SceneVariable
00283 : public Variable
00284 {
00285 private:
00286 ReferenceCounting<SceneExpression> __expression;
00287
00288 public:
00289 ReferenceCounting<SceneExpression> expression() const;
00290
00291 ConstReferenceCounting<SceneExpression>
00292 operator=(ReferenceCounting<SceneExpression> e);
00293
00294 SceneVariable(const std::string& name);
00295
00296 SceneVariable(const std::string& name,
00297 ReferenceCounting<SceneExpression> expression);
00298
00299 SceneVariable(const SceneVariable& rv);
00300
00301 ~SceneVariable();
00302 };
00303
00304
00312 class DomainExpression;
00313 class DomainVariable
00314 : public Variable
00315 {
00316 private:
00317 ReferenceCounting<DomainExpression> __expression;
00318
00319 public:
00320 ReferenceCounting<DomainExpression> expression() const;
00321
00322 ConstReferenceCounting<DomainExpression>
00323 operator=(ReferenceCounting<DomainExpression> e);
00324
00325 DomainVariable(const std::string& name);
00326
00327 DomainVariable(const std::string& name,
00328 ReferenceCounting<DomainExpression> expression);
00329
00330 DomainVariable(const DomainVariable& rv);
00331
00332 ~DomainVariable();
00333 };
00334
00335
00343 class OFStreamExpression;
00344 class OFStreamVariable
00345 : public Variable
00346 {
00347 private:
00348 ReferenceCounting<OFStreamExpression> __expression;
00349
00350 public:
00351 ReferenceCounting<OFStreamExpression> expression() const;
00352
00353 ConstReferenceCounting<OFStreamExpression>
00354 operator=(ReferenceCounting<OFStreamExpression> e);
00355
00356 OFStreamVariable(const std::string& name);
00357
00358 OFStreamVariable(const std::string& name,
00359 ReferenceCounting<OFStreamExpression> expression);
00360
00361 OFStreamVariable(const OFStreamVariable& rv);
00362
00363 ~OFStreamVariable();
00364 };
00365
00366
00374 class IFStreamExpression;
00375 class IFStreamVariable
00376 : public Variable
00377 {
00378 private:
00379 ReferenceCounting<IFStreamExpression> __expression;
00380
00381 public:
00382 ReferenceCounting<IFStreamExpression> expression() const;
00383
00384 ConstReferenceCounting<IFStreamExpression>
00385 operator=(ReferenceCounting<IFStreamExpression> e);
00386
00387 IFStreamVariable(const std::string& name);
00388
00389 IFStreamVariable(const std::string& name,
00390 ReferenceCounting<IFStreamExpression> expression);
00391
00392 IFStreamVariable(const IFStreamVariable& rv);
00393
00394 ~IFStreamVariable();
00395 };
00396
00397 #endif // VARIABLE_HPP