Changeset 1464 in Sophya for trunk/ArchTOIPipe/Kernel/toi.cc


Ignore:
Timestamp:
Apr 11, 2001, 12:01:44 PM (24 years ago)
Author:
ansari
Message:

1) Fin de passage des flags en int_8
2) TOIRegularWindow mis ds un fichier spare , Reza 11/4/2001

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ArchTOIPipe/Kernel/toi.cc

    r1462 r1464  
    99#endif
    1010
    11 #define CHKSYNC(ctx) 
    12 //  if (((TOIRegularWindow*)this)->data.size() != ((TOIRegularWindow*)this)->flags.size())        \
    13 //    cout << ctx << ((TOIRegularWindow*)this)->data.size() << "  " <<  \
    14 //      ((TOIRegularWindow*)this)->flags.size() << endl;  \
    1511
    1612TOI::TOI() {
     
    7369}
    7470
    75 #ifndef NO_SOPHYA
     71/*
     72 RZCMV   ----- l'interface va etre modifiee, NE PAS UTILISER
     73#ifndef NO_SOPHYA
    7674Array TOI::getError(int iStart, int iEnd) {
    7775  if (errorTOI == NULL) throw NotFoundExc("TOI::getDataError : no Error TOI");
    78   return errorTOI->getData(iStart, iEnd);
     76  return errorTOI->getData(iStart, iEnd);
     77}
     78Array TOI::getData(int iStart, int iEnd) {
     79  lock();
     80  Array a = doGetData(iStart, iEnd);
     81  unlock();
     82  if (fgsigput) { fgsigput = false; broadcast(); }
     83  return a;
     84}
     85TArray<int_4> TOI::getFlag(int iStart, int iEnd) {
     86  lock();
     87  TArray<int_4> a = doGetFlag(iStart, iEnd);
     88  unlock();
     89  if (fgsigput) { fgsigput = false; broadcast(); }
     90  return a;
    7991}
    8092#endif
    81 
    82 /*RZCMV
     93  l'interface va etre modifiee, NE PAS UTILISER ----
     94*/
     95
     96
     97/*
     98RZCMV  -------   A revoir les getError() ...
    8399double TOI::getError(int i) {
    84100  if (errorTOI == NULL) throw NotFoundExc("TOI::getDataError : no Error TOI");
     
    94110*/
    95111
    96 #ifndef NO_SOPHYA
    97 Array TOI::getData(int iStart, int iEnd) {
    98   lock();
    99   Array a = doGetData(iStart, iEnd);
    100   unlock();
    101   if (fgsigput) { fgsigput = false; broadcast(); }
    102   return a;
    103 }
    104 #endif
    105 
    106112double TOI::getData(int i) {
    107113  lock();
    108   int_4 flg;
     114  int_8 flg;
    109115  double dat;
    110116  doGetData(i, dat, flg);
     
    114120}
    115121
    116 void TOI::getData(int i, double &data,int_4 &flag) {
     122void TOI::getData(int i, double &data,int_8 &flag) {
    117123  lock();
    118124  doGetData(i, data, flag);
     
    122128}
    123129
    124 
    125 
    126 #ifndef NO_SOPHYA
    127 TArray<int_4> TOI::getFlag(int iStart, int iEnd) {
    128   lock();
    129   TArray<int_4> a = doGetFlag(iStart, iEnd);
    130   unlock();
    131   if (fgsigput) { fgsigput = false; broadcast(); }
    132   return a;
    133 }
    134 #endif
    135 
    136130 
    137  
    138 
    139 void TOI::putData(int i, double value, int_4 flag) {
     131
     132void TOI::putData(int i, double value, int_8 flag) {
    140133  lock();
    141134  doPutData(i, value, flag);
     
    208201
    209202
    210 TOIRegularWindow::TOIRegularWindow() {
    211   i0 = -1;
    212 }
    213 
    214 TOIRegularWindow::TOIRegularWindow(string nm) {
    215   i0 = -1;
    216   setName(nm);
    217 }
    218 
    219 TOIRegularWindow::~TOIRegularWindow() {
    220 }
    221 
    222 TOI::DataStatus TOIRegularWindow::isDataAvailNL(int iStart, int iEnd) {
    223   if (iEnd >= i0 + (long)data.size()) return DATA_NOT_YET;
    224   if (iStart < i0) return DATA_DELETED;
    225   return DATA_OK;
    226 }
    227 
    228 TOI::DataStatus TOIRegularWindow::isDataAvailNL(int i) {
    229   return TOI::isDataAvailNL(i);
    230 }
    231 
    232 void TOIRegularWindow::doWontNeedBefore(int i) {
    233   if (i>= i0 + (long)data.size())
    234     i = i0 + (long)data.size() - 1;
    235   if (i>i0) {  // don't empty list
    236     int osz = data.size();
    237     data.erase(data.begin(), data.begin()+(i-i0));
    238     flags.erase(flags.begin(), flags.begin()+(i-i0));
    239     i0 = i;
    240   }
    241 }
    242 
    243 
    244 #ifndef NO_SOPHYA
    245 Array TOIRegularWindow::doGetData(int iStart, int iEnd) {
    246   if (!isDataAvailNL(iStart, iEnd)) {
    247     throw RangeCheckError("TOI::getData : data not available");
    248   }
    249   Array dat(iEnd - iStart + 1);
    250   long j0 = iStart - i0;
    251   for (int i=0; i<iEnd-iStart+1; i++) {
    252     dat[i] = data[i+j0];
    253   }
    254   return dat;
    255 }
    256 #endif
    257 
    258 void TOIRegularWindow::doGetData(int i, double & val, int_4 & flg) {
    259   if (isDataAvailNL(i) != DATA_OK) {
    260     cerr << "TOI::getData : data not available " << i << endl;
    261     throw RangeCheckError("TOI::getData : data not available");
    262   }
    263 
    264   val = data[i - i0];
    265   flg = flags[i - i0];
    266 
    267 }
    268 
    269 
    270 #ifndef NO_SOPHYA
    271 TArray<int_4> TOIRegularWindow::doGetFlag(int iStart, int iEnd) {
    272   if (isDataAvailNL(iStart, iEnd) != DATA_OK) throw RangeCheckError("TOI::getData : data not available");
    273   TArray<int_4> dat(iEnd - iStart + 1);
    274   long j0 = iStart - i0;
    275   for (int i=0; i<iEnd-iStart+1; i++) {
    276     dat[i] = flags[i+j0];
    277   }
    278   return dat;
    279 }
    280 #endif
    281 
    282 /*RZCMV
    283 int_4 TOIRegularWindow::doGetFlag(int i) {
    284   if (isDataAvailNL(i) != DATA_OK) {
    285     cerr << "TOI::getFlag : data not available " << i << endl;
    286     throw RangeCheckError("TOI::getFlag : data not available");
    287   }
    288   return flags[i - i0];
    289 }
    290 */
    291 
    292 
    293 void TOIRegularWindow::doPutData(int i, double value, int_4 flag) {
    294   if (i0 == -1) {
    295     data.insert(data.begin(), 1,  defaultValue);
    296     flags.insert(flags.begin(), 1,  0);
    297     i0 = i;
    298   } else if (i<i0) {
    299     data.insert(data.begin(), i0-i, defaultValue);
    300     flags.insert(flags.begin(), i0-i, 0);
    301     i0 = i;
    302   } else if (i>=i0+(int)data.size()) {
    303     data.insert(data.end(), (long)  (i-(i0+data.size())+1), defaultValue);
    304     flags.insert(flags.end(), (long) (i-(i0+flags.size())+1), 0);
    305   }
    306   data[i-i0] = value;
    307   flags[i-i0] = flag; 
    308 }
    309 
    310 bool TOIRegularWindow::hasSomeData() {
    311   lock();
    312   bool x = !data.empty();
    313   unlock();
    314   return x;
    315 }
    316 
    317 int TOIRegularWindow::nextDataAvail(int iAfter) {
    318   lock();
    319   if (iAfter >= i0 + (long)data.size()) {unlock(); return -1;}
    320   if (iAfter < i0) {unlock(); return i0;}
    321   unlock();
    322   return iAfter+1;
    323 }
    324 
    325 /*  A faire, le nettoyage (heuristique selon demandes ?, guide ? ) */
    326                  
    327 
Note: See TracChangeset for help on using the changeset viewer.