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

3G开发

开发平台:

Visual C++

  1. //
  2. //  File = vector_pf.cpp
  3. //
  4. #include "vector_pf.h"
  5. #include "matrix_pf.h"
  6. #include "pfelem.h"
  7. #ifdef _DEBUG
  8.   #include <fstream>
  9.   //#define _VEC_DEBUG 1
  10.   extern ofstream DebugFile;
  11. #endif
  12. //------------------------------------------
  13. vector_pf::vector_pf( void )
  14.   {
  15.   #ifdef _VEC_DEBUG
  16.     DebugFile << "nctor for vector(void) at " 
  17.               << (void*)this << endl;
  18.   #endif
  19.   Is_Temp = 0;
  20.   };
  21. //------------------------------------------
  22. vector_pf::vector_pf(int origin, int size)
  23.   {
  24.   if( size <= 0)
  25.       cout << "illegal vector dimension" << endl;
  26.   pV = new vrep;
  27.   pV->orig_indx = origin;
  28.   pV->length = size;
  29.   pV->max_indx = origin + size -1;
  30.   pV->f = new PrimeFieldElem[size];
  31.   #ifdef _VEC_DEBUG
  32.     DebugFile << "v::v(i,i): array " << size << " long alloc at "
  33.               << (void*)(pV->f) << endl;
  34.   #endif
  35.   for(int i=0; i<size; i++)
  36.     pV->f[i] = PrimeFieldElem(0);
  37.   pV->refcnt = 1;
  38.   Is_Temp = 0;
  39.   };
  40. //-----------------------------------------
  41. // destructor
  42. vector_pf::~vector_pf()
  43.   {
  44.   #ifdef _VEC_DEBUG
  45.     DebugFile << "ndtor for vector at " << (void*)this << endl;
  46.   #endif
  47.   if(pV!=NULL)
  48.     {
  49.     #ifdef _VEC_DEBUG
  50.       DebugFile << "refcnt = " << (pV->refcnt) << endl;
  51.     #endif
  52.     if(--pV->refcnt == 0)
  53.       {
  54.       #ifdef _VEC_DEBUG
  55.         DebugFile << "nv::~v(): deleting elem array at "
  56.                   << (void*)(pV->f) << endl;
  57.       #endif
  58.       delete[] pV->f;
  59.       #ifdef _VEC_DEBUG
  60.         DebugFile << "nv::~v(): deleting vrep at "
  61.                   << (void*)pV << endl;
  62.       #endif
  63.       delete pV;
  64.       pV = NULL;
  65.       }
  66.     }
  67.   };
  68. //------------------------------------------------------
  69. vector_pf::vector_pf( vector_pf &x)
  70. {
  71.   #ifdef _VEC_DEBUG
  72.     DebugFile << "in copy constructor v::v(v)" << endl;
  73.   #endif
  74.   x.pV->refcnt++;
  75.   pV=x.pV;
  76. }
  77. #if 0
  78. PrimeFieldElem& vector_pf::operator[](int i)
  79.   {
  80.     return pV->f[ (((i >=(pV->orig_indx)) && (i <= pV->max_indx)) ? 
  81.                  (i-(pV->orig_indx)) : 0)];
  82.   }
  83. #endif