// This may look like C code, but it is really -*- C++ -*- // template array class for numerical types // R. Ansari, C.Magneville 03/2000 #ifndef FIOTArray_SEEN #define FIOTArray_SEEN #include "machdefs.h" #include #include "tarray.h" #include "tmatrix.h" #include "tvector.h" #include "ppersist.h" namespace SOPHYA { ///////////////////////////////////////////////////////////////////////// // Gestionnaire PPF de TArray, ainsi que TMatrix/TVector ///////////////////////////////////////////////////////////////////////// template class FIO_TArray : public PPersist { public: FIO_TArray(); FIO_TArray(string const & filename); FIO_TArray(const TArray & obj); FIO_TArray(TArray * obj); virtual ~FIO_TArray(); virtual AnyDataObj* DataObj(); virtual void SetDataObj(AnyDataObj & o); inline operator TArray() { return(*dobj); } protected : virtual void ReadSelf(PInPersist&); virtual void WriteSelf(POutPersist&) const; TArray * dobj; //!< Pointer to the connected TArray bool ownobj; //!< true if the connected object belong to the class }; /*! \ingroup TArray \fn operator<<(POutPersist&,TArray&) \brief Write TArray \b obj into POutPersist stream \b os */ template inline POutPersist& operator << (POutPersist& os, TArray & obj) { FIO_TArray fio(&obj); fio.Write(os); return(os); } /*! \ingroup TArray \fn operator>>(PInPersist&,TArray&) \brief Read TArray \b obj from PInPersist stream \b os */ template inline PInPersist& operator >> (PInPersist& is, TArray & obj) { FIO_TArray fio(&obj); is.SkipToNextObject(); fio.Read(is); return(is); } } // Fin du namespace #endif