Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

FeatureDefinition.h

Go to the documentation of this file.
00001 #ifndef Impala_Core_Feature_FeatureDefinition_h
00002 #define Impala_Core_Feature_FeatureDefinition_h
00003 
00004 #include "Basis/StringList.h"
00005 #include "Core/Feature/FeatureParameter.h"
00006 
00007 namespace Impala
00008 {
00009 namespace Core
00010 {
00011 namespace Feature
00012 {
00013 
00014 
00015 class FeatureDefinition
00016 {
00017 public:
00018 
00019     FeatureDefinition()
00020     {
00021         mName = String("noName");
00022     }
00023 
00024     FeatureDefinition(CString definitionString)
00025     {
00026         StringList l(definitionString, '_');
00027         StringListCI i = l.begin();
00028         mName = *i;
00029         i++;
00030         while (i != l.end())
00031         {
00032             String param = *i;
00033             i++;
00034             if (i != l.end())
00035             {
00036                 String val = *i;
00037                 i++;
00038                 AddParameter(param, val);
00039             }
00040         }
00041     }
00042 
00043     bool
00044     Empty() const
00045     {
00046         return ((mName == "noName") && (mParams.size() == 0));
00047     }
00048 
00049     String
00050     GetName() const
00051     {
00052         return mName;
00053     }
00054 
00055     String
00056     AsString() const
00057     {
00058         String res = mName;
00059         for (int i=0 ; i<mParams.size() ; i++)
00060             res += String("_") + mParams[i].GetName() + "_"
00061                 + mParams[i].GetValue();
00062         return res;
00063     }
00064 
00065     int
00066     GetNrParameters() const
00067     {
00068         return mParams.size();
00069     }
00070 
00071     FeatureParameter
00072     GetParameter(int i) const
00073     {
00074         return mParams[i];
00075     }
00076 
00077     String
00078     GetParameterValue(CString parameterName) const
00079     {
00080         for (int i=0 ; i<mParams.size() ; i++)
00081             if (mParams[i].GetName() == parameterName)
00082                 return mParams[i].GetValue();
00083         return "";
00084     }
00085 
00086     String
00087     GetParameterValue(int i) const
00088     {
00089         if(i<mParams.size() && i>=0)
00090             return mParams[i].GetValue();
00091         return "";
00092     }
00093 
00094     void
00095     AddParameter(FeatureParameter p)
00096     {
00097         for (int i=0 ; i<mParams.size() ; i++)
00098             if (mParams[i].GetName() == p.GetName())
00099             {
00100                 mParams[i] = p;
00101                 return;
00102             }
00103         mParams.push_back(p);
00104     }
00105 
00106     template <class C>
00107     void
00108     AddParameter(CString name, C value)
00109     {
00110         FeatureParameter p(name, MakeString(value));
00111         AddParameter(p);
00112     }
00113 
00114     bool
00115     operator==(const FeatureDefinition& def) const
00116     {
00117         if (mName != def.mName)
00118             return false;
00119         if (mParams.size() != def.mParams.size())
00120             return false;
00121         for (int i=0 ; i<mParams.size() ; i++)
00122             if (mParams[i] != def.mParams[i])
00123                 return false;
00124         return true;
00125     }
00126 
00127 private:
00128 
00129     String                   mName;
00130     std::vector<FeatureParameter> mParams;
00131 
00132 };
00133 
00134 } // namespace Feature
00135 } // namespace Core
00136 } // namespace Impala
00137 
00138 #endif

Generated on Fri Mar 19 09:31:06 2010 for ImpalaSrc by  doxygen 1.5.1