ParameterSpace.hpp

00001 
00002 //
00003 // $Id: ParameterSpace.hpp,v 1.3 2007/08/22 22:16:29 werner Exp $
00004 //
00006 #ifndef __PARAMETERSPACE_HPP
00007 #define __PARAMETERSPACE_HPP  "Created 25.08.2004 19:16:22 by bzfbenge"
00008 
00009 #include "BundleAPI.h"
00010 #include <memcore/RefPtr.hpp>
00011 #include <string>
00012 #include <vector>
00013 
00014 namespace Fiber
00015 {
00016         using namespace MemCore; 
00017         using std::string;
00018         using std::vector;
00019 
00020 
00021 class   BUNDLE_API ParameterID : public ReferenceBase<ParameterID>
00022 {
00023         string  name;
00024 public:
00025         ParameterID(const string&n)
00026         : ReferenceBase<ParameterID>(this)
00027         , name(n)
00028         {}
00029 
00030         string Name() const
00031         {
00032                 return name;
00033         }
00034 };
00035 
00036 class   BUNDLE_API Parameter
00037 {
00038 public:
00039         RefPtr<ParameterID>     Id;
00040         double                  value;
00041 
00042         Parameter(const RefPtr<ParameterID>&id, double val)
00043         : Id(id), value(val)
00044         {}
00045 };
00046 
00047 class   BUNDLE_API ParameterSet
00048 {
00049 public:
00050         vector<Parameter> parameters;
00051 public:
00052         ParameterSet();
00053 
00054         ParameterSet&operator+=(const Parameter&P)
00055         {
00056                 parameters.push_back(P);
00057                 return *this;
00058         }
00059 
00060         string name(int i) const
00061         {
00062                 assert(i<(int)parameters.size() );
00063                 if (!parameters[i].Id)
00064                         return "?";
00065 
00066                 return parameters[i].Id->Name();
00067         }
00068 
00069         double&operator[](int i)
00070         {
00071                 assert(i<(int)parameters.size() );
00072                 return parameters[i].value;
00073         }
00074 
00075         int size() const
00076         {
00077                 return parameters.size();
00078         }
00079 };
00080 
00081 class   BUNDLE_API ParameterList
00082 {
00083         list<RefPtr<ParameterID> > Id;
00084 public:
00085         ParameterList();
00086         ~ParameterList();
00087 };
00088 
00089 class   BUNDLE_API ParameterSpace
00090 {
00091 public:
00092 };
00093 
00094 
00095 } /* namespace Fiber */ 
00096 
00097 #endif /* __PARAMETERSPACE_HPP */