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

3G开发

开发平台:

Visual C++

  1. //
  2. //  File = aux_sig_buf.cpp
  3. //
  4. #include <stdlib.h>
  5. #include <fstream>
  6. //#include <math.h>
  7. //#include "parmfile.h"
  8. #include "aux_sig_buf.h"
  9. //#include "misdefs.h"
  10. //extern ParmFile *ParmInput;
  11. #include "psstream.h"
  12.    
  13. extern PracSimStream ErrorStream;
  14. #ifdef _DEBUG
  15.   extern ofstream *DebugFile;
  16. #endif
  17. //extern int PassNumber;
  18. //ofstream PowerDebug("power.txt", ios::out);
  19. //======================================================
  20. // constructor - parms read from ParmFile
  21. template <class T>
  22. AuxSignalBuffer<T>::AuxSignalBuffer( T sample, int nominal_block_size )
  23. {
  24.    Max_Sample_Count = 3*nominal_block_size;
  25.    Buffer_Start = new T[Max_Sample_Count];
  26.    Write_Ptr = Buffer_Start;
  27.    Sample_Count = 0;
  28. }
  29. //=============================================
  30. template <class T>
  31. AuxSignalBuffer<T>::~AuxSignalBuffer( void )
  32.    delete[] Buffer_Start;
  33. };
  34. //===========================================
  35. template <class T>
  36. T* AuxSignalBuffer<T>::Load(  T *in_sig_ptr,
  37.                               int in_sig_block_size,
  38.                               int *in_sig_buf_count)
  39. {
  40.    int idx;
  41.    T *input_ptr = in_sig_ptr;
  42.    Sample_Count += in_sig_block_size;
  43.    if(Sample_Count > Max_Sample_Count)
  44.    {
  45.       ErrorStream << "Too many samples in AuxSignalBuffer" << endl;
  46.       exit(-99);
  47.    }
  48.    for(idx=0; idx<in_sig_block_size; idx++)
  49.    {
  50.       *Write_Ptr++ = *input_ptr++;
  51.    }
  52.    *in_sig_buf_count = Sample_Count;
  53.    return(Buffer_Start);
  54. }
  55. //===========================================
  56. template <class T>
  57. void AuxSignalBuffer<T>::Release(  int num_samps_to_release)
  58. {
  59.    T* src_ptr;
  60.    T* dest_ptr;
  61.    int idx;
  62.    Sample_Count -= num_samps_to_release;
  63.    Write_Ptr -= num_samps_to_release;
  64.    src_ptr = Buffer_Start + num_samps_to_release;
  65.    dest_ptr = Buffer_Start;
  66.    for(idx=0; idx<Sample_Count; idx++)
  67.    {
  68.       *dest_ptr++ = *src_ptr++;
  69.    }
  70. }
  71. template AuxSignalBuffer<float>;