Changeset 1103 in Sophya for trunk/SophyaLib/TArray/utilarr.h
- Timestamp:
- Jul 27, 2000, 2:00:10 AM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/TArray/utilarr.h
r956 r1103 7 7 8 8 #include "machdefs.h" 9 #include "mutyv.h" 10 9 11 #include <stdlib.h> 12 #include <vector> 10 13 11 14 namespace SOPHYA { … … 26 29 ////////////////////////////////////////////////////////// 27 30 //! Class to generate a random sequence of values 28 class RandomSequence { 31 class Sequence { 32 public: 33 virtual ~Sequence(); 34 virtual MuTyV & Value(uint_8 k) const = 0; 35 inline MuTyV & operator () (uint_8 k) const { return(Value(k)) ; } 36 }; 37 38 class RandomSequence : public Sequence { 29 39 public: 30 40 //! to define the generator type … … 34 44 }; 35 45 36 RandomSequence(int typ = RandomSequence::Gaussian, double m=0., double s=1.); 37 double Rand(); 46 explicit RandomSequence(int typ = RandomSequence::Gaussian, double m=0., double s=1.); 47 virtual ~RandomSequence(); 48 virtual MuTyV & Value(uint_8 k) const ; 49 double Rand(); 50 38 51 protected: 39 52 int typ_; //!< random generation type 40 53 double mean_, sig_; //!< generation parameters mean and sigma (if needed) 54 mutable MuTyV retv_; 41 55 }; 42 56 … … 44 58 ////////////////////////////////////////////////////////// 45 59 //! Class to generate a sequence of values 46 class Sequence {60 class RegularSequence : public Sequence { 47 61 public: 48 explicit Sequence (double start=0., double step=1., Arr_DoubleFunctionOfX f=NULL);49 explicit Sequence (RandomSequence rseq);62 explicit RegularSequence (double start=0., double step=1., Arr_DoubleFunctionOfX f=NULL); 63 virtual ~RegularSequence(); 50 64 51 65 //! return start value of the sequence … … 53 67 //! return step value of the sequence 54 68 inline double & Step() { return step_; } 55 double operator () (uint_4 k); 69 70 virtual MuTyV & Value(uint_8 k) const ; 71 56 72 protected: 57 73 double start_; //!< start value of the sequence 58 74 double step_; //!< step value of the sequence 59 75 Arr_DoubleFunctionOfX myf_; //!< pointer to the sequence function 60 bool fgrseq_; //!< true if RandomSequence is used 61 RandomSequence rseq_; //!< RandomSequence 76 mutable MuTyV retv_; 62 77 }; 78 79 class EnumeratedSequence : public Sequence { 80 public: 81 virtual ~EnumeratedSequence(); 82 virtual MuTyV & Value(uint_8 k) const ; 83 EnumeratedSequence & operator , (MuTyV const & v); 84 private: 85 vector<MuTyV> vecv_; 86 mutable MuTyV retv_; 87 }; 88 89 inline EnumeratedSequence operator , (MuTyV const & a, MuTyV const & b) 90 { EnumeratedSequence seq; return ((seq,a),b) ; } 63 91 64 92 //////////////////////////////////////////////////////////
Note:
See TracChangeset
for help on using the changeset viewer.