00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef SAMPLE_H
00031 #define SAMPLE_H
00032
00033
00034
00035 #include "../bfl_err.h"
00036 #include "../wrappers/matrix/vector_wrapper.h"
00037 #include "../wrappers/matrix/matrix_wrapper.h"
00038 #include <iostream>
00039
00040 namespace BFL
00041 {
00042 using namespace std;
00043
00047 template <typename T> class Sample
00048 {
00049 protected:
00051 T Value;
00052
00053 public:
00055
00059 Sample (unsigned int dimension = 0);
00060
00062 virtual ~Sample();
00063
00065 Sample ( const Sample<T> & my_sample );
00066
00068 T& ValueGet ( ) ;
00069
00071 const T& ValueGet ( ) const;
00072
00073
00074 unsigned int DimensionGet () const;
00075
00076
00077 void DimensionSet (unsigned int dim);
00078
00080
00083 void ValueSet ( const T& value );
00084
00086
00090 template <typename S> friend ostream & operator<< (ostream & stream,
00091 Sample<S> & my_sample);
00093 Sample & operator= (const Sample & my_sample);
00094
00095 };
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105 template <typename T> Sample<T>::Sample (unsigned int dimension)
00106 {};
00107
00108
00109
00110 template <typename T> Sample<T>::~Sample( )
00111 {};
00112
00113
00114
00115 template <typename T> Sample<T>::Sample ( const Sample & my_sample )
00116 {
00117 Value = my_sample.ValueGet();
00118 }
00119
00120
00121
00122 template <typename T> void Sample<T>::ValueSet (const T& value)
00123 {
00124 Value = value;
00125 }
00126
00127
00128
00129 template <typename T> T& Sample<T>::ValueGet ( )
00130 {
00131 return Value;
00132 }
00133
00134
00135
00136 template <typename T> const T& Sample<T>::ValueGet ( ) const
00137 {
00138 return Value;
00139 }
00140
00141
00142 template <typename T> unsigned int Sample<T>::DimensionGet ( ) const
00143 {
00144 return 0;
00145 }
00146
00147
00148 template <typename T> void Sample<T>::DimensionSet (unsigned int dim)
00149 {}
00150
00151
00152 template <typename S> ostream & operator<< (ostream & stream, Sample<S> & my_sample)
00153 {
00154 stream << my_sample.ValueGet() << endl;
00155 return stream;
00156 }
00157
00158
00159 template <typename T> Sample<T> & Sample<T>::operator= ( const Sample<T> & my_sample)
00160 {
00161 Value = my_sample.ValueGet();
00162 return *this;
00163 }
00164
00165
00166
00167 }
00168
00169 #include "sample.cpp"
00170
00171 #endif