Changeset 269 in Sophya
- Timestamp:
- Apr 27, 1999, 5:01:44 PM (26 years ago)
- Location:
- trunk/SophyaLib/BaseTools
- Files:
-
- 1 added
- 1 deleted
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/BaseTools/machdefs.h
r268 r269 230 230 231 231 #ifdef __GNUG__ 232 #define GNU_TEMPLATES 232 #define ANSI_TEMPLATES 233 // #define GNU_TEMPLATES 233 234 #define HAS_STR_NPOS 234 235 #define HAS_EXPLICIT -
trunk/SophyaLib/BaseTools/ndatablock.cc
r268 r269 9 9 #include "pexceptions.h" 10 10 #include "ndatablock.h" 11 #include "objfio.h" 11 12 12 13 using namespace PlanckDPC; … … 245 246 // Re-dimension, dans ce cas re-allocation de la place 246 247 { 248 // Pas de realloc, si pas de changement de taille ? 249 if (n == mSz) return; // $CHECK$ A verifier , Reza 26/04/99 247 250 Alloc(n); 248 251 } … … 275 278 if(i1>=mSz || n<=0 || !p) return; 276 279 size_t i2 = i1+n; if(i2>mSz) i2=mSz; 277 size_t im = 1; bool enl ;280 size_t im = 1; bool enl=false; 278 281 while(i1<i2) { 279 282 enl = false; … … 561 564 } 562 565 return result; 566 } 567 568 569 // ------------------------------------------------------------------------- 570 // Les objets delegues pour la gestion de persistance 571 // ------------------------------------------------------------------------- 572 573 /* 574 template <class T> 575 void ObjFileIO< NDataBlock<T> >::ReadSelf(PInPersist& is) 576 template <class T> 577 void ObjFileIO< NDataBlock<T> >::WriteSelf(POutPersist& os) 578 */ 579 580 template <class T> 581 FIO_NDataBlock<T>::FIO_NDataBlock() 582 { 583 dobj=new NDataBlock<T>; 584 } 585 586 template <class T> 587 FIO_NDataBlock<T>::FIO_NDataBlock(string const & filename) 588 { 589 dobj=new NDataBlock<T>; 590 Read(filename); 591 } 592 593 template <class T> 594 FIO_NDataBlock<T>::FIO_NDataBlock(const NDataBlock<T> & obj) 595 { 596 dobj = new NDataBlock<T>(obj); 597 } 598 599 template <class T> 600 FIO_NDataBlock<T>::FIO_NDataBlock(const NDataBlock<T> * obj) 601 { 602 dobj = new NDataBlock<T>(*obj); 603 } 604 605 template <class T> 606 FIO_NDataBlock<T>::~FIO_NDataBlock() 607 { 608 if (dobj) delete dobj; 609 } 610 611 template <class T> 612 AnyDataObj* FIO_NDataBlock<T>::DataObj() 613 { 614 return(dobj); 615 } 616 617 618 template <class T> 619 void FIO_NDataBlock<T>::ReadSelf(PInPersist& is) 620 { 621 // On lit les 3 premiers uint_8 622 uint_8 itab[3]; 623 is.Get(itab, 3); 624 if (dobj == NULL) dobj = new NDataBlock<T>(itab[1]); 625 else dobj->ReSize(itab[1]); 626 // On lit le tableau de nombres 627 PIOSReadArray(is, dobj->Data(), dobj->Size()); 628 } 629 630 631 template <class T> 632 void FIO_NDataBlock<T>::WriteSelf(POutPersist& os) const 633 { 634 if (dobj == NULL) return; // Attention - $CHECK$ Reza 26/04/99 635 // On ecrit 3 uint_4 636 // 0 : Numero de version, 1 : Taille, 2 reserve a l 637 uint_8 itab[3]; 638 itab[0] = 1; 639 itab[1] = dobj->Size(); 640 itab[2] = 0; 641 os.Put(itab, 3); 642 // On ecrit le tableau de nombres 643 PIOSWriteArray(os, dobj->Data(), dobj->Size()); 563 644 } 564 645 … … 577 658 #pragma define_template NDataBlock< complex<float> > 578 659 #pragma define_template NDataBlock< complex<double> > 579 #endif 580 581 #ifdef __GNU_TEMPLATES__ 660 661 // Instances des delegues FileIO (PPersist) 662 #pragma define_template FIO_NDataBlock<uint_1>; 663 #pragma define_template FIO_NDataBlock<uint_2>; 664 #pragma define_template FIO_NDataBlock<int_2>; 665 #pragma define_template FIO_NDataBlock<int_4>; 666 #pragma define_template FIO_NDataBlock<int_8>; 667 #pragma define_template FIO_NDataBlock<uint_2>; 668 #pragma define_template FIO_NDataBlock<uint_4>; 669 #pragma define_template FIO_NDataBlock<uint_8>; 670 #pragma define_template FIO_NDataBlock<r_8>; 671 #pragma define_template FIO_NDataBlock<r_4>; 672 #pragma define_template FIO_NDataBlock< complex<float> >; 673 #pragma define_template FIO_NDataBlock< complex<double> >; 674 675 #endif 676 677 678 #if defined(ANSI_TEMPLATES) || defined(GNU_TEMPLATES) 582 679 template class NDataBlock<uint_1>; 583 680 template class NDataBlock<uint_2>; … … 592 689 template class NDataBlock< complex<float> >; 593 690 template class NDataBlock< complex<double> >; 594 #endif 595 596 #if defined(__ANSI_TEMPLATES__) 597 template class NDataBlock<uint_1>; 598 template class NDataBlock<uint_2>; 599 template class NDataBlock<int_2>; 600 template class NDataBlock<int_4>; 601 template class NDataBlock<int_8>; 602 template class NDataBlock<uint_2>; 603 template class NDataBlock<uint_4>; 604 template class NDataBlock<uint_8>; 605 template class NDataBlock<r_4>; 606 template class NDataBlock<r_8>; 607 template class NDataBlock< complex<float> >; 608 template class NDataBlock< complex<double> >; 609 #endif 691 692 // Instances des delegues FileIO (PPersist) 693 template class FIO_NDataBlock<uint_1>; 694 template class FIO_NDataBlock<uint_2>; 695 template class FIO_NDataBlock<int_2>; 696 template class FIO_NDataBlock<int_4>; 697 template class FIO_NDataBlock<int_8>; 698 template class FIO_NDataBlock<uint_2>; 699 template class FIO_NDataBlock<uint_4>; 700 template class FIO_NDataBlock<uint_8>; 701 template class FIO_NDataBlock<r_8>; 702 template class FIO_NDataBlock<r_4>; 703 template class FIO_NDataBlock< complex<float> >; 704 template class FIO_NDataBlock< complex<double> >; 705 #endif -
trunk/SophyaLib/BaseTools/ndatablock.h
r268 r269 8 8 #include "machdefs.h" 9 9 #include "anydataobj.h" 10 #include "ppersist.h" 10 11 #include <iostream.h> 11 12 … … 110 111 template<class T> 111 112 inline ostream& operator << (ostream& os, const NDataBlock<T>& a) 112 { Print(os); return(os);}113 {a.Print(os); return(os);} 113 114 template<class T> 114 115 inline NDataBlock<T> operator + (const NDataBlock<T>& a,T b) … … 149 150 {return a.Div(b);} 150 151 152 153 // Classe pour la gestion de persistance 154 template <class T> 155 class FIO_NDataBlock : public PPersist { 156 157 public: 158 FIO_NDataBlock(); 159 FIO_NDataBlock(string const & filename); 160 FIO_NDataBlock(const NDataBlock<T> & obj); 161 FIO_NDataBlock(const NDataBlock<T> * obj); 162 virtual ~FIO_NDataBlock(); 163 164 virtual AnyDataObj* DataObj(); 165 inline operator NDataBlock<T>() { return(*dobj); } 166 167 protected : 168 virtual void ReadSelf(PInPersist&); 169 virtual void WriteSelf(POutPersist&) const; 170 NDataBlock<T> * dobj; 171 172 }; 173 151 174 } // Fin du namespace 152 175 -
trunk/SophyaLib/BaseTools/peidainit.cc
r255 r269 3 3 #include <stdio.h> 4 4 #include "pexceptions.h" 5 #include "ppersist.h" 5 6 #include "peidainit.h" 6 7 // --- Classe d'initialisation de PEIDA++, (PPersistMgr en particulier) … … 22 23 #endif 23 24 25 PIOPersist::Initialize(); 24 26 //DEL PPersistMgr::classList = new PPersistMgr::ClassList; 25 27 //DEL PShPersist::objList = new PShPersist::ObjList; -
trunk/SophyaLib/BaseTools/pexceptions.cc
r242 r269 5 5 6 6 void PFailHandler(void); 7 8 // egcs ne semble pas connaitre set_new_handler (Reza 26/04/99) 9 #ifdef __GNUG__ 10 void PFailHandler(void) {} 11 void InitFailNewHandler() {} 12 #else 7 13 8 14 void PFailHandler(void) … … 18 24 } 19 25 26 #endif -
trunk/SophyaLib/BaseTools/ppersist.cc
r256 r269 37 37 38 38 MD5_CTX PIOPersist::ctx; 39 PIOPersist::ClassList PIOPersist::classList; 40 39 PIOPersist::ClassList * PIOPersist::classList = NULL; // $CHECK$ Reza 26/04/99 40 41 //++ 42 void 43 PIOPersist::Initialize() 44 // Initialisation globale (objets statiques) $CHECK$ Reza 26/04/99 45 //-- 46 { 47 classList = new PIOPersist::ClassList; 48 } 41 49 42 50 //++ … … 51 59 //-- 52 60 { 53 if (classList .size() && (classList.find(classId) != classList.end())) {61 if (classList->size() && (classList->find(classId) != classList->end())) { 54 62 cerr << "RegisterClass : Error, " << hex << classId << dec 55 63 << " already registered." << endl; … … 57 65 } 58 66 59 classList[classId] = f;67 (*classList)[classId] = f; 60 68 } 61 69 … … 64 72 PIOPersist::FindCreatorFunc(uint_8 classId) 65 73 { 66 ClassList::iterator i = classList .find(classId);67 if (i == classList .end()) throw(NotFoundExc("PIOPersist::FindCreatorFunc"));74 ClassList::iterator i = classList->find(classId); 75 if (i == classList->end()) throw(NotFoundExc("PIOPersist::FindCreatorFunc")); 68 76 return (*i).second; 69 77 } -
trunk/SophyaLib/BaseTools/ppersist.h
r256 r269 25 25 #endif 26 26 27 // Classe de base pour les objets qui peuvent devenir PPersist 28 27 29 namespace PlanckDPC { 28 30 31 class AnyDataObj; 32 29 33 class PIOPersist; 30 34 class PInPersist; … … 48 52 void Write(POutPersist&, string const& tag) const; 49 53 void ReadAtTag(PInPersist& s, string const& tag); 54 55 virtual AnyDataObj* DataObj() // Retourne l'objet reel $CHECK$ - Reza 56 { return(NULL); } // Devrait etre virtuelle pure 50 57 protected: 51 58 virtual void ReadSelf(PInPersist&)=0; … … 76 83 static MD5_CTX ctx; 77 84 85 static void Initialize(); // Pour initialiser classList 78 86 private: 79 87 80 88 typedef map<uint_8, ClassCreatorFunc, less<uint_8> > ClassList; 81 static ClassList classList; 89 // Pas de createur appele pour objets statiques sur Linux - $CHECK$ Reza 26/04/99 90 static ClassList * classList; 82 91 83 92 protected:
Note:
See TracChangeset
for help on using the changeset viewer.