Changeset 269 in Sophya


Ignore:
Timestamp:
Apr 27, 1999, 5:01:44 PM (26 years ago)
Author:
ansari
Message:

Persist<NDataBlock> Reza 27/04/99

Location:
trunk/SophyaLib/BaseTools
Files:
1 added
1 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/BaseTools/machdefs.h

    r268 r269  
    230230
    231231#ifdef __GNUG__
    232 #define GNU_TEMPLATES
     232#define ANSI_TEMPLATES
     233// #define GNU_TEMPLATES
    233234#define HAS_STR_NPOS
    234235#define HAS_EXPLICIT
  • trunk/SophyaLib/BaseTools/ndatablock.cc

    r268 r269  
    99#include "pexceptions.h"
    1010#include "ndatablock.h"
     11#include "objfio.h"
    1112
    1213using namespace PlanckDPC;
     
    245246// Re-dimension, dans ce cas re-allocation de la place
    246247{
     248// Pas de realloc, si pas de changement de taille ?
     249if (n == mSz)  return;  // $CHECK$ A verifier , Reza 26/04/99
    247250Alloc(n);
    248251}
     
    275278if(i1>=mSz || n<=0 || !p) return;
    276279size_t i2 = i1+n; if(i2>mSz) i2=mSz;
    277 size_t im = 1; bool enl;
     280size_t im = 1; bool enl=false;
    278281while(i1<i2) {
    279282  enl = false;
     
    561564}
    562565return result;
     566}
     567
     568
     569// -------------------------------------------------------------------------
     570//   Les objets delegues pour la gestion de persistance
     571// -------------------------------------------------------------------------
     572
     573/*
     574template <class T>
     575void ObjFileIO< NDataBlock<T> >::ReadSelf(PInPersist& is)
     576template <class T>
     577void ObjFileIO< NDataBlock<T> >::WriteSelf(POutPersist& os)
     578*/
     579
     580template <class T>
     581FIO_NDataBlock<T>::FIO_NDataBlock()
     582{
     583dobj=new NDataBlock<T>;
     584}
     585
     586template <class T>
     587FIO_NDataBlock<T>::FIO_NDataBlock(string const & filename)
     588{
     589dobj=new NDataBlock<T>;
     590Read(filename);
     591}
     592
     593template <class T>
     594FIO_NDataBlock<T>::FIO_NDataBlock(const NDataBlock<T> & obj)
     595{
     596dobj = new NDataBlock<T>(obj);
     597}
     598
     599template <class T>
     600FIO_NDataBlock<T>::FIO_NDataBlock(const NDataBlock<T> * obj)
     601{
     602dobj = new NDataBlock<T>(*obj);
     603}
     604
     605template <class T>
     606FIO_NDataBlock<T>::~FIO_NDataBlock()
     607{
     608if (dobj) delete dobj;
     609}
     610
     611template <class T>
     612AnyDataObj* FIO_NDataBlock<T>::DataObj()
     613{
     614return(dobj);
     615}
     616
     617
     618template <class T>
     619void FIO_NDataBlock<T>::ReadSelf(PInPersist& is)
     620{
     621// On lit les 3 premiers uint_8
     622uint_8 itab[3];
     623is.Get(itab, 3);
     624if (dobj == NULL) dobj = new NDataBlock<T>(itab[1]);
     625else dobj->ReSize(itab[1]);
     626// On lit le tableau de nombres
     627PIOSReadArray(is, dobj->Data(), dobj->Size());
     628}
     629
     630
     631template <class T>
     632void FIO_NDataBlock<T>::WriteSelf(POutPersist& os) const
     633{
     634if (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
     637uint_8 itab[3];
     638itab[0] = 1;
     639itab[1] = dobj->Size();
     640itab[2] = 0;
     641os.Put(itab, 3);
     642//  On ecrit le tableau de nombres
     643PIOSWriteArray(os, dobj->Data(), dobj->Size());
    563644}
    564645
     
    577658#pragma define_template NDataBlock< complex<float> >
    578659#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)
    582679template class NDataBlock<uint_1>;
    583680template class NDataBlock<uint_2>;
     
    592689template class NDataBlock< complex<float> >;
    593690template 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)
     693template class FIO_NDataBlock<uint_1>;
     694template class FIO_NDataBlock<uint_2>;
     695template class FIO_NDataBlock<int_2>;
     696template class FIO_NDataBlock<int_4>;
     697template class FIO_NDataBlock<int_8>;
     698template class FIO_NDataBlock<uint_2>;
     699template class FIO_NDataBlock<uint_4>;
     700template class FIO_NDataBlock<uint_8>;
     701template class FIO_NDataBlock<r_8>;
     702template class FIO_NDataBlock<r_4>;
     703template class FIO_NDataBlock< complex<float> >;
     704template class FIO_NDataBlock< complex<double> >;
     705#endif
  • trunk/SophyaLib/BaseTools/ndatablock.h

    r268 r269  
    88#include "machdefs.h"
    99#include "anydataobj.h"
     10#include "ppersist.h"
    1011#include <iostream.h>
    1112
     
    110111template<class T>
    111112inline ostream& operator << (ostream& os, const NDataBlock<T>& a)
    112                       {Print(os); return(os);}
     113                      {a.Print(os); return(os);}
    113114template<class T>
    114115inline NDataBlock<T> operator + (const NDataBlock<T>& a,T b)
     
    149150                      {return a.Div(b);}
    150151
     152
     153// Classe pour la gestion de persistance
     154template <class T>
     155class FIO_NDataBlock : public  PPersist  {
     156
     157public:
     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
     167protected :
     168  virtual void       ReadSelf(PInPersist&);           
     169  virtual void       WriteSelf(POutPersist&) const; 
     170  NDataBlock<T> * dobj;
     171
     172};
     173
    151174} // Fin du namespace
    152175
  • trunk/SophyaLib/BaseTools/peidainit.cc

    r255 r269  
    33#include <stdio.h>
    44#include "pexceptions.h"
     5#include "ppersist.h"
    56#include "peidainit.h"
    67// ---  Classe d'initialisation de PEIDA++, (PPersistMgr en particulier)
     
    2223  #endif
    2324
     25  PIOPersist::Initialize();
    2426//DEL  PPersistMgr::classList = new PPersistMgr::ClassList;
    2527//DEL  PShPersist::objList    = new PShPersist::ObjList;
  • trunk/SophyaLib/BaseTools/pexceptions.cc

    r242 r269  
    55
    66void PFailHandler(void);
     7
     8// egcs ne semble pas connaitre set_new_handler (Reza 26/04/99)
     9#ifdef __GNUG__
     10void PFailHandler(void) {}
     11void InitFailNewHandler() {}
     12#else
    713
    814void PFailHandler(void)
     
    1824}
    1925
     26#endif
  • trunk/SophyaLib/BaseTools/ppersist.cc

    r256 r269  
    3737
    3838MD5_CTX PIOPersist::ctx;
    39 PIOPersist::ClassList PIOPersist::classList;
    40 
     39PIOPersist::ClassList * PIOPersist::classList = NULL;   // $CHECK$ Reza 26/04/99
     40
     41//++
     42void
     43PIOPersist::Initialize()
     44//  Initialisation globale (objets statiques) $CHECK$ Reza 26/04/99
     45//--
     46{
     47classList = new PIOPersist::ClassList;
     48}
    4149
    4250//++
     
    5159//--
    5260{
    53   if (classList.size() && (classList.find(classId) != classList.end())) {
     61  if (classList->size() && (classList->find(classId) != classList->end())) {
    5462      cerr << "RegisterClass : Error, " << hex << classId << dec
    5563           << " already registered." << endl;
     
    5765    }
    5866 
    59   classList[classId] = f;
     67  (*classList)[classId] = f;
    6068}
    6169
     
    6472PIOPersist::FindCreatorFunc(uint_8 classId)
    6573{
    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"));
    6876  return (*i).second;
    6977}
  • trunk/SophyaLib/BaseTools/ppersist.h

    r256 r269  
    2525#endif
    2626
     27// Classe de base pour les objets qui peuvent devenir PPersist
     28
    2729namespace PlanckDPC {
    2830 
     31  class AnyDataObj;
     32
    2933  class PIOPersist;
    3034  class PInPersist;
     
    4852    void               Write(POutPersist&, string const& tag) const;
    4953    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
    5057  protected: 
    5158    virtual void       ReadSelf(PInPersist&)=0;           
     
    7683    static MD5_CTX ctx;
    7784 
     85    static void Initialize();   // Pour initialiser classList
    7886  private:
    7987
    8088    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; 
    8291
    8392  protected:
Note: See TracChangeset for help on using the changeset viewer.