00001 #ifndef FIXLENTIMESERIES_H 00002 #define FIXLENTIMESERIES_H 00003 00004 #include <iostream> 00005 00006 #include "common.h" 00007 00008 using namespace Borealis; 00009 00010 00017 class FixLenTimeSeries 00018 { 00019 public: 00023 typedef enum 00024 { OUT_OF_RANGE, 00025 EMPTY_TIME_SERIES 00026 } Error; 00027 00028 00029 public: 00033 FixLenTimeSeries(); 00034 00035 00041 FixLenTimeSeries( int32 numberOfSamples ) throw( Error ); 00042 00043 00048 FixLenTimeSeries( const FixLenTimeSeries &flts ); 00049 00050 00055 FixLenTimeSeries &operator=( const FixLenTimeSeries &flts ); 00056 00057 00061 ~FixLenTimeSeries(); 00062 00063 00067 int32 getNumberOfSamples() const 00068 { return( _number_of_samples ); 00069 } 00070 00071 00080 double getSample( int32 i = 0 ) const throw( Error ); 00081 00082 00089 double &getSample( int32 i = 0 ) throw( Error ); 00090 00091 00101 double getAverage( double p_old = 0, double p_new = 0 ) const 00102 throw( Error ); 00103 00104 00109 void addSample( double sample ); 00110 00111 00121 static FixLenTimeSeries resampleFixLenTimeSeries( 00122 const FixLenTimeSeries &s, 00123 int32 n, 00124 double k, 00125 double ip 00126 ) 00127 throw( FixLenTimeSeries::Error ); 00128 00129 00135 friend ostream &operator<<( ostream &os, 00136 const FixLenTimeSeries &flts ); 00137 00138 00139 00140 private: 00144 int32 _number_of_samples; 00145 00149 double* _samples; 00150 00154 int32 _last_sample_index; 00155 }; 00156 00157 #endif // FIXLENTIMESERIES_H