psstream.h
上传用户:jtjnyq9001
上传日期:2014-11-21
资源大小:3974k
文件大小:5k
源码类别:

3G开发

开发平台:

Visual C++

  1. //
  2. //  File = psstream.h
  3. //
  4. #ifndef _PSSTREAM_H_
  5. #define _PSSTREAM_H_
  6. #include "psmodel.h"
  7. //#include "f_cmplx.h"
  8. //#include "d_cmplx.h"
  9. #include "delay_modes.h"
  10. #include "interp_modes.h"
  11. #include <complex>
  12. using namespace std;
  13. class PracSimStream
  14. {
  15. public:
  16.   PracSimStream(void);
  17.   ~PracSimStream(void);
  18.   //-------------------------------------------
  19.   // add a new stream to the list of streams
  20.   // comprising this composite pseudostream
  21.   
  22.   void SetReportFile( ofstream& new_report );
  23.   //------------------------------------------------
  24.   // overload insertion operator for each type of
  25.   // output that might be issued by a PracSim model
  26.   //PracSimStream& operator<< ( char *char_string );
  27.   PracSimStream& operator<< ( const char *char_string );
  28.   PracSimStream& operator<< ( char character );
  29.   PracSimStream& operator<< ( float f_val );
  30.   PracSimStream& operator<< ( double d_val );
  31.   PracSimStream& operator<< ( int i_val );
  32.   PracSimStream& operator<< ( long long_val );
  33.   PracSimStream& operator<< ( std::complex<float> fc_val );
  34.   PracSimStream& operator<< ( std::complex<double> dc_val );
  35.   PracSimStream& operator<< ( void* voidptr_val );
  36.   //----------------------------------------------------------------------
  37.   // overloads of << for PracSimSpecific enum types
  38.   friend PracSimStream& operator<<( PracSimStream&, const DELAY_MODE_T&);
  39.   friend PracSimStream& operator<<( PracSimStream&, const INTERP_MODE_T&);
  40.   //----------------------------------------------------
  41.   // define signature that allows overloaded << to be
  42.   // used for inserting manipulators into the pseudostream
  43.   PracSimStream& operator<< (PracSimStream& (*_BRS) (PracSimStream&))
  44.     { return((*_BRS)(*this));}
  45.   //-----------------------------------------------------
  46.   // methods for performing manipulator actions
  47.   void InsertEndl(void);
  48.   void InsertFlush(void);
  49.   void InsertEnds(void);
  50.   void InsertHex(void);
  51.   void InsertOct(void);
  52.   void InsertDec(void);
  53.   void SetPrecision( int passed_int );
  54.   void SetW( int passed_int );
  55.   //void SetBase( int passed_int );
  56.   //void SetFill( int passed_int );
  57.   void SetIOSFlags( long new_flag );
  58.   void ResetIOSFlags( long new_flag );
  59.   void FillBlanks( int length );
  60.   void FillBlanksRight( int length );
  61.   void FillBlanksLeft( int length );
  62.   void BadManipulator( void );
  63.   //--------------------------------------------
  64.   // flag functions
  65.   long* flags(void);
  66.   long flags(long* flag_buffer);
  67.   long setf(long flag_bits);
  68.   long setf(long flag_bits, long field);
  69.   long unsetf(long unset_bits);
  70.   void clear(int state=0);
  71.   //-----------------------------------------
  72.   //  format-related functions
  73.   int width(void);
  74.   int width(int len);
  75.   char fill(void);
  76.   char fill(char ch);
  77.   int precision(int len);
  78.   int precision(void);
  79. private:
  80.   int Num_Report_Files;
  81.   ofstream* Report_File[5];
  82.   
  83. };
  84. class pracsim_manip
  85. {
  86. private:
  87.   int i;
  88.   PracSimStream& (*f)(PracSimStream&, int);
  89. public:
  90.   pracsim_manip( PracSimStream& (*ff)(PracSimStream&, int),
  91.                   int ii) : f(ff), i(ii) {};
  92.   friend PracSimStream& operator<<( PracSimStream& rs, pracsim_manip& m);
  93. };
  94. class pracsim_manip_long
  95. {
  96. private:
  97.   long l;
  98.   PracSimStream& (*fl)(PracSimStream&, long);
  99. public:
  100.   pracsim_manip_long(PracSimStream& (*ff)(PracSimStream&, long),
  101.                       long ll) : fl(ff), l(ll) {}
  102.   friend PracSimStream& operator<<(
  103.                 PracSimStream& rs, pracsim_manip_long& m)
  104.                 {return m.fl(rs,m.l);}
  105. };
  106. //--------------------------------------------------
  107. // manipulator invokers
  108.   PracSimStream& _setprecision_(PracSimStream& results_stream, int passed_int);
  109.   PracSimStream& _setw_(PracSimStream& results_stream, int passed_int);
  110.   PracSimStream& _setbase_(PracSimStream& results_stream, int passed_int);
  111.   PracSimStream& _setfill_(PracSimStream& results_stream, int passed_int);
  112.   PracSimStream& _setiosflags_(PracSimStream& results_stream, long new_flag);
  113.   PracSimStream& _resetiosflags_(PracSimStream& results_stream, long new_flag);
  114.   PracSimStream& _fill_blanks_(PracSimStream& results_stream, int length);
  115.   PracSimStream& _fill_blanks_right_(PracSimStream& results_stream, int length);
  116.   PracSimStream& _fill_blanks_left_(PracSimStream& results_stream, int length);
  117.   PracSimStream& endl(PracSimStream& results_stream);
  118.   PracSimStream& flush(PracSimStream& results_stream);
  119.   PracSimStream& ends(PracSimStream& results_stream);
  120.   PracSimStream& hex(PracSimStream& results_stream);
  121.   PracSimStream& oct(PracSimStream& results_stream);
  122.   PracSimStream& dec(PracSimStream& results_stream);
  123. ;
  124. #endif //_PSSTREAM_H_