00001
00024 #ifndef _TIMEFEATURE_H
00025 #define _TIMEFEATURE_H
00026
00027 #include "../Feature.h"
00028
00032 class FEATURE_EXPORT_CLASS TimeFeature : public PersistantFeature
00033 {
00034 friend class TimeFeatureProvider;
00035
00036 public:
00038 typedef enum {Timestamp, Second, Minute, Hour, Day, Weekday, Yearday, Month, Year} FeatureKind;
00039
00040 protected:
00042 TimeFeature(FeatureKind kind, time_t* minval, time_t* maxval);
00044 TimeFeature(FeatureKind kind, time_t* minval, time_t* maxval, time_t timestamp);
00045
00046 public:
00047 virtual double getPosition() const;
00048 virtual double getDistance(Feature *f) const;
00049 virtual void moveTowards(Feature *f, double factor);
00050 virtual string serialize() const;
00051 virtual void unserialize(string value);
00052
00053 virtual featureparams write() const;
00054 virtual void read(featureparams *param);
00055
00056 virtual Feature* clone() const;
00057 virtual void aggregate(aggregatelist samples);
00058
00059 virtual FeatureType getType() const { return numerical_discrete; }
00060 virtual const string getName() const;
00061
00063 virtual time_t getVal() const { return timestamp; }
00064
00065 const time_t getMin() const { return *minval; }
00066 const time_t getMax() const { return *maxval; }
00067
00068 #if _DEBUG_FEATURES
00069 virtual string toString() const;
00070 #endif
00071
00072 private:
00074
00076 time_t* minval;
00077 time_t* maxval;
00078
00079 time_t timestamp;
00080 FeatureKind feature;
00082 };
00083
00087 class FEATURE_EXPORT_CLASS TimeFeatureProvider : public FeatureProvider
00088 {
00089 private:
00091
00093 time_t timeFeature_maxval;
00094 time_t timeFeature_minval;
00095 stringvector features;
00096 map<string, TimeFeature::FeatureKind> featuremap;
00097
00098 time_t timestamp;
00100
00101 public:
00103 TimeFeatureProvider(providerparams ¶ms);
00104
00105 virtual Feature* getFeature(string name) const;
00106 virtual Feature* getSample(string name) const;
00107 virtual void nextSample(clock_t checkpoint);
00108 };
00109
00110 #endif // _TIMEFEATURE_H