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

3G开发

开发平台:

Visual C++

  1. //
  2. //  File = psstream.cpp
  3. //
  4. #include <stdlib.h>
  5. #include <fstream>
  6. #include <iomanip>
  7. //#include <ios.h>
  8. #include "psstream.h"
  9. //=================================================
  10. // constructor
  11. PracSimStream::PracSimStream( )
  12. {
  13.   Num_Report_Files = 0;
  14. }
  15. //===============================================
  16. // destructor
  17. PracSimStream::~PracSimStream(){};
  18. //================================================
  19. //  Adds a file to the stream
  20. void PracSimStream::SetReportFile( ofstream& new_report )
  21. {
  22.   Report_File[Num_Report_Files] = &new_report;
  23.   Num_Report_Files++;
  24.   return;
  25. }
  26. //=============================================
  27. // insert character string
  28. PracSimStream& PracSimStream::operator<< (const char* char_string)
  29. {
  30.   int i;
  31.   for(i=0; i<Num_Report_Files; i++)
  32.     {
  33.     (*(Report_File[i])) << char_string;
  34.     }
  35.   return(*this);
  36. }
  37. //====================================================
  38. // insert single character
  39. PracSimStream& PracSimStream::operator<< (float f_val)
  40. {
  41.   int i;
  42.   for(i=0; i<Num_Report_Files; i++)
  43.     {
  44.     (*(Report_File[i])) << f_val;
  45.     }
  46.   return(*this);
  47. }
  48. //====================================================
  49. // insert double
  50. PracSimStream& PracSimStream::operator<< (double d_val)
  51. {
  52.   int i;
  53.   for(i=0; i<Num_Report_Files; i++)
  54.     {
  55.     (*(Report_File[i])) << d_val;
  56.     }
  57.   return(*this);
  58. }
  59. //====================================================
  60. // insert int
  61. PracSimStream& PracSimStream::operator<< (int i_val)
  62. {
  63.   int i;
  64.   for(i=0; i<Num_Report_Files; i++)
  65.     {
  66.     (*(Report_File[i])) << i_val;
  67.     }
  68.   return(*this);
  69. }
  70. //====================================================
  71. // insert long
  72. PracSimStream& PracSimStream::operator<< (long long_val)
  73. {
  74.   int i;
  75.   for(i=0; i<Num_Report_Files; i++)
  76.     {
  77.     (*(Report_File[i])) << long_val;
  78.     }
  79.   return(*this);
  80. }
  81. //====================================================
  82. // insert float_complex
  83. PracSimStream& PracSimStream::operator<< (std::complex<float> fc_val)
  84. {
  85.   int i;
  86.   for(i=0; i<Num_Report_Files; i++)
  87.     {
  88.     (*(Report_File[i])) << fc_val.real() << ", " << fc_val.imag();
  89.     }
  90.   return(*this);
  91. }
  92. //====================================================
  93. // insert double_complex
  94. PracSimStream& PracSimStream::operator<< (std::complex<double> dc_val)
  95. {
  96.   int i;
  97.   for(i=0; i<Num_Report_Files; i++)
  98.     {
  99.     (*(Report_File[i])) << dc_val.real() << ", " << dc_val.imag();
  100.     }
  101.   return(*this);
  102. }
  103. //====================================================
  104. // insert void*
  105. PracSimStream& PracSimStream::operator<< (void* voidptr_val)
  106. {
  107.   int i;
  108.   for(i=0; i<Num_Report_Files; i++)
  109.     {
  110.     (*(Report_File[i])) << voidptr_val;
  111.     }
  112.   return(*this);
  113. }
  114. //====================================================
  115. // insert endl manipulator
  116. void PracSimStream::InsertEndl(void)
  117. {
  118.   int i;
  119.   for(i=0; i<Num_Report_Files; i++)
  120.     {
  121.     (*(Report_File[i])) << endl;
  122.     }
  123.   return;
  124. }
  125. //====================================================
  126. // insert flush manipulator
  127. void PracSimStream::InsertFlush(void)
  128. {
  129.   int i;
  130.   for(i=0; i<Num_Report_Files; i++)
  131.     {
  132.     (*(Report_File[i])) << flush;
  133.     }
  134.   return;
  135. }
  136. //====================================================
  137. // insert ends manipulator
  138. void PracSimStream::InsertEnds(void)
  139. {
  140.   int i;
  141.   for(i=0; i<Num_Report_Files; i++)
  142.     {
  143.     (*(Report_File[i])) << ends;
  144.     }
  145.   return;
  146. }
  147. //====================================================
  148. // insert hex manipulator
  149. void PracSimStream::InsertHex(void)
  150. {
  151.   int i;
  152.   for(i=0; i<Num_Report_Files; i++)
  153.     {
  154.     (*(Report_File[i])) << hex;
  155.     }
  156.   return;
  157. }
  158. //====================================================
  159. // insert oct manipulator
  160. void PracSimStream::InsertOct(void)
  161. {
  162.   int i;
  163.   for(i=0; i<Num_Report_Files; i++)
  164.     {
  165.     (*(Report_File[i])) << oct;
  166.     }
  167.   return;
  168. }
  169. //====================================================
  170. // insert dec manipulator
  171. void PracSimStream::InsertDec(void)
  172. {
  173.   int i;
  174.   for(i=0; i<Num_Report_Files; i++)
  175.     {
  176.     (*(Report_File[i])) << dec;
  177.     }
  178.   return;
  179. }
  180. //=================================================
  181. void PracSimStream::SetPrecision( int passed_int)
  182. {
  183.   int i;
  184.   for(i=0; i<Num_Report_Files; i++)
  185.     {
  186.     (*(Report_File[i])) << setprecision(passed_int);
  187.     }
  188.   return;
  189. }
  190. //=================================================
  191. void PracSimStream::SetW( int passed_int)
  192. {
  193.   int i;
  194.   for(i=0; i<Num_Report_Files; i++)
  195.     {
  196.     (*(Report_File[i])) << setw(passed_int);
  197.     }
  198.   return;
  199. }
  200. //=================================================
  201. //void PracSimStream::SetBase( int passed_int)
  202. //{
  203. //  int i;
  204. //  for(i=0; i<Num_Report_Files; i++)
  205. //    {
  206. //    (*(Report_File[i])) << setbase(passed_int);
  207. //    }
  208. //  return;
  209. //}
  210. #if 0
  211. //=================================================
  212. void PracSimStream::SetFill( int passed_int)
  213. {
  214.   int i;
  215.   for(i=0; i<Num_Report_Files; i++)
  216.     {
  217.     (*(Report_File[i])) << setfill(passed_int);
  218.     }
  219.   return;
  220. }
  221. #endif
  222. //=================================================
  223. void PracSimStream::SetIOSFlags( long new_flag)
  224. {
  225.   int i;
  226.   for(i=0; i<Num_Report_Files; i++)
  227.     {
  228.     (*(Report_File[i])) << setiosflags(new_flag);
  229.     }
  230.   return;
  231. }
  232. //=================================================
  233. void PracSimStream::ResetIOSFlags( long new_flag)
  234. {
  235.   int i;
  236.   for(i=0; i<Num_Report_Files; i++)
  237.     {
  238.     (*(Report_File[i])) << resetiosflags(new_flag);
  239.     }
  240.   return;
  241. }
  242. //=================================================
  243. void PracSimStream::FillBlanks( int length)
  244. {
  245.   int i;
  246.   for(i=0; i<Num_Report_Files; i++)
  247.     {
  248.     (*(Report_File[i])) << setw(length) << setfill(' ');
  249.     }
  250.   return;
  251. }
  252. //=================================================
  253. void PracSimStream::FillBlanksRight( int length)
  254. {
  255.   int i;
  256.   for(i=0; i<Num_Report_Files; i++)
  257.     {
  258.     (*(Report_File[i])).setf(ios::right);
  259.     (*(Report_File[i])) << setw(length) << setfill(' ');
  260.     }
  261.   return;
  262. }
  263. //=================================================
  264. void PracSimStream::FillBlanksLeft( int length)
  265. {
  266.   int i;
  267.   for(i=0; i<Num_Report_Files; i++)
  268.     {
  269.     (*(Report_File[i])).setf(ios::left);
  270.     (*(Report_File[i])) << setw(length) << setfill(' ');
  271.     }
  272.   return;
  273. }
  274. //=================================================
  275. void PracSimStream::BadManipulator( void)
  276. {
  277.   int i;
  278.   for(i=0; i<Num_Report_Files; i++)
  279.     {
  280.     (*(Report_File[i])) << "bad manipulator code detected" << endl;
  281.     }
  282.   exit(88);
  283. }
  284. //=================================================
  285. long* PracSimStream::flags(void)
  286. {
  287.   int i;
  288.   long* flag_buffer;
  289.   flag_buffer = new long[Num_Report_Files];
  290.   for(i=0; i<Num_Report_Files; i++)
  291.     {
  292.     flag_buffer[i] = (Report_File[i])->flags();
  293.     }
  294.   return(flag_buffer);
  295. }
  296. //=================================================
  297. long PracSimStream::flags(long* flag_buffer)
  298. {
  299.   int i;
  300.   long old_flag;
  301.   for(i=0; i<Num_Report_Files; i++)
  302.     {
  303.     old_flag = (Report_File[i])->flags(flag_buffer[i]);
  304.     }
  305.   return(old_flag);
  306. }
  307. //=================================================
  308. long PracSimStream::setf(long flag_bits)
  309. {
  310.   int i;
  311.   long old_flag;
  312.   for(i=0; i<Num_Report_Files; i++)
  313.     {
  314.     old_flag = (Report_File[i])->setf(flag_bits);
  315.     }
  316.   return(old_flag);
  317. }
  318. //=================================================
  319. long PracSimStream::setf(long flag_bits, long field)
  320. {
  321.   int i;
  322.   long old_flag;
  323.   for(i=0; i<Num_Report_Files; i++)
  324.     {
  325.     old_flag = (Report_File[i])->setf(flag_bits, field);
  326.     }
  327.   return(old_flag);
  328. }
  329. #if 0
  330. //=================================================
  331. long PracSimStream::unsetf(long unset_bits)
  332. {
  333.   int i;
  334.   long old_flag;
  335.   for(i=0; i<Num_Report_Files; i++)
  336.     {
  337.     old_flag = (Report_File[i])->unsetf(unset_bits);
  338.     }
  339.   return(old_flag);
  340. }
  341. #endif
  342. //=================================================
  343. void PracSimStream::clear(int state)
  344. {
  345.   int i;
  346.   for(i=0; i<Num_Report_Files; i++)
  347.     {
  348.     (Report_File[i])->clear(state);
  349.     }
  350.   return;
  351. }
  352. //=================================================
  353. int PracSimStream::width(void)
  354. {
  355.   int i;
  356.   int the_width;
  357.   for(i=0; i<Num_Report_Files; i++)
  358.     {
  359.     the_width = (Report_File[i])->width();
  360.     }
  361.   return(the_width);
  362. }
  363. //=================================================
  364. int PracSimStream::width(int len)
  365. {
  366.   int i;
  367.   int old_width;
  368.   for(i=0; i<Num_Report_Files; i++)
  369.     {
  370.     old_width = (Report_File[i])->width(len);
  371.     }
  372.   return(old_width);
  373. }
  374. //=================================================
  375. char PracSimStream::fill(void)
  376. {
  377.   int i;
  378.   int the_fill;
  379.   for(i=0; i<Num_Report_Files; i++)
  380.     {
  381.     the_fill = (Report_File[i])->fill();
  382.     }
  383.   return(the_fill);
  384. }
  385. //=================================================
  386. char PracSimStream::fill(char ch)
  387. {
  388.   int i;
  389.   int old_fill;
  390.   for(i=0; i<Num_Report_Files; i++)
  391.     {
  392.     old_fill = (Report_File[i])->fill(ch);
  393.     }
  394.   return(old_fill);
  395. }
  396. //=================================================
  397. int PracSimStream::precision(void)
  398. {
  399.   int i;
  400.   int the_precision;
  401.   for(i=0; i<Num_Report_Files; i++)
  402.     {
  403.     the_precision = (Report_File[i])->precision();
  404.     }
  405.   return(the_precision);
  406. }
  407. //=================================================
  408. int PracSimStream::precision(int len)
  409. {
  410.   int i;
  411.   int old_precision;
  412.   for(i=0; i<Num_Report_Files; i++)
  413.     {
  414.     old_precision = (Report_File[i])->precision(len);
  415.     }
  416.   return(old_precision);
  417. }
  418. //===================================================
  419. //===================================================
  420. //  manipulators for PracSimStream
  421. //===========================================================
  422. // setprecision
  423. //
  424. PracSimStream& _setprecision_( PracSimStream& results_stream,
  425.                                 int passed_int)
  426. {
  427.   results_stream.SetPrecision(passed_int);
  428.   return(results_stream);
  429. }
  430. //===========================================================
  431. // setw
  432. //
  433. PracSimStream& _setw_( PracSimStream& results_stream,
  434.                                 int passed_int)
  435. {
  436.   results_stream.SetW(passed_int);
  437.   return(results_stream);
  438. }
  439. //===========================================================
  440. // setbase
  441. //
  442. //PracSimStream& _setbase_( PracSimStream& results_stream,
  443. //                                int passed_int)
  444. //{
  445. //  results_stream.SetBase(passed_int);
  446. //  return(results_stream);
  447. //}
  448. #if 0
  449. //===========================================================
  450. // setfill
  451. //
  452. PracSimStream& _setfill_( PracSimStream& results_stream,
  453.                                 int passed_int)
  454. {
  455.   results_stream.SetFill(passed_int);
  456.   return(results_stream);
  457. }
  458. #endif
  459. //===========================================================
  460. // setiosflags
  461. //
  462. PracSimStream& _setiosflags_( PracSimStream& results_stream,
  463.                                 long new_flag)
  464. {
  465.   results_stream.SetIOSFlags(new_flag);
  466.   return(results_stream);
  467. }
  468. //===========================================================
  469. // resetiosflags
  470. //
  471. PracSimStream& _resetiosflags_( PracSimStream& results_stream,
  472.                                 long new_flag)
  473. {
  474.   results_stream.ResetIOSFlags(new_flag);
  475.   return(results_stream);
  476. }
  477. //===========================================================
  478. // fill_blanks
  479. //
  480. PracSimStream& _fill_blanks_( PracSimStream& results_stream,
  481.                                 int length)
  482. {
  483.   results_stream.FillBlanks(length);
  484.   return(results_stream);
  485. }
  486. //===========================================================
  487. // fill_blanks_right
  488. //
  489. PracSimStream& _fill_blanks_right_( PracSimStream& results_stream,
  490.                                 int length)
  491. {
  492.   results_stream.FillBlanksRight(length);
  493.   return(results_stream);
  494. }
  495. //===========================================================
  496. // fill_blanks_left
  497. //
  498. PracSimStream& _fill_blanks_left_( PracSimStream& results_stream,
  499.                                 int length)
  500. {
  501.   results_stream.FillBlanksLeft(length);
  502.   return(results_stream);
  503. }
  504. //===========================================================
  505. // endl
  506. //
  507. PracSimStream& endl( PracSimStream& results_stream )
  508. {
  509.   results_stream.InsertEndl();
  510.   return(results_stream);
  511. }
  512. //===========================================================
  513. // flush
  514. //
  515. PracSimStream& flush( PracSimStream& results_stream )
  516. {
  517.   results_stream.InsertFlush();
  518.   return(results_stream);
  519. }
  520. //===========================================================
  521. // ends
  522. //
  523. PracSimStream& ends( PracSimStream& results_stream )
  524. {
  525.   results_stream.InsertEnds();
  526.   return(results_stream);
  527. }
  528. //===========================================================
  529. // hex
  530. //
  531. PracSimStream& hex( PracSimStream& results_stream )
  532. {
  533.   results_stream.InsertHex();
  534.   return(results_stream);
  535. }
  536. //===========================================================
  537. // oct
  538. //
  539. PracSimStream& oct( PracSimStream& results_stream )
  540. {
  541.   results_stream.InsertOct();
  542.   return(results_stream);
  543. }
  544. //===========================================================
  545. // dec
  546. //
  547. PracSimStream& dec( PracSimStream& results_stream )
  548. {
  549.   results_stream.InsertDec();
  550.   return(results_stream);
  551. }
  552. //=======================================================================
  553. PracSimStream& operator<<( PracSimStream& rs, pracsim_manip& m)
  554. {
  555.   return m.f(rs,m.i);
  556. }