source: Sophya/trunk/SophyaLib/BaseTools/ppftpointerio.h@ 2660

Last change on this file since 2660 was 2660, checked in by ansari, 20 years ago

1/ Ajout de la classe PPFWrapperSTLVector<T> pour gestion de persistence
PPF des vecteurs de STL (fichier ppfwrapstlv.h)
2/ Ajout de la classe SegDataBlock<T> (et l'interface SegDBInterface<T>)
pour la gestion de blocs de donnees segmentes (segdatablock.h) et son
gestionnaire PPF FIO_SegDataBlock<T> (fichier fiosegdb.h )
3/ Ajout de la classe SwSegDataBlock<T> (Data bloc segmente avec gestion
de swap) et la classe swapper PPF PPFDataSwapper<T> (fichiers
ppfswapper.h et swsegdb.h)
4/ Ajout de la classes utilitaire PPF_TPointer_IO<T> (fichier
ppftpointer.h)
5/ Enregistrement des classes handler PPF ds sophyainit.cc
6/ Amelioration de l'impression ds AnalyseTags (ppfbinstream.cc)
7/ MAJ Makefile et objlist.list (ajout de TimeStamp.cc en particulier)

Reza , 7 Avril 2005

File size: 3.9 KB
Line 
1// This may look like C code, but it is really -*- C++ -*-
2// Classe pour faciliter entree-sortie PPF pour des pointeurs
3// R. Ansari - Mars 2005
4
5#ifndef PPFTPOINTERIO_H_SEEN
6#define PPFTPOINTERIO_H_SEEN
7
8#include "ppersist.h"
9
10//----------------------------------------------------------------------
11namespace SOPHYA {
12
13/*!
14 \class SOPHYA::PPF_TPointer_IO
15 \ingroup BaseTools
16 A template utility class with static methods to ease handling of array
17 I/O in PPF streams (POutPersist and PInPersist). It is not intented for
18 direct use in user programs, but for writing PPF persistence handler
19 classes (PPersist).
20 The C++ I/O operators POutPersist& << and PInPersist& >> should be defined for
21 new types and classes.
22*/
23
24template <class T>
25class PPF_TPointer_IO {
26public:
27 //! Writes the array pointed to by \b arr (size \b n) to POutPersist stream \b os
28 static void Write(POutPersist & os, T const * arr, size_t n)
29 {
30 for(size_t k=0; k<n; k++) os << arr[k];
31 }
32 //! Reads from the PInPersist \b is into array pointed to by \b arr (size \b n)
33 static void Read(PInPersist & is, T * arr, size_t n)
34 {
35 for(size_t k=0; k<n; k++) is >> arr[k];
36 }
37};
38// Specific implementation using table I/O in PPFBinaryIOStreams
39void PPF_TPointer_IO<char>::Write(POutPersist & os, char const * arr, size_t n)
40 { os.PutBytes(arr,n); }
41void PPF_TPointer_IO<char>::Read(PInPersist & is, char * arr, size_t n)
42 { is.GetBytes(arr,n); }
43
44void PPF_TPointer_IO< int_1 >::Write(POutPersist & os, int_1 const * arr, size_t n)
45 { os.Put(arr,n); }
46void PPF_TPointer_IO< int_1 >::Read(PInPersist & is, int_1 * arr, size_t n)
47 { is.Get(arr,n); }
48void PPF_TPointer_IO< uint_1 >::Write(POutPersist & os, uint_1 const * arr, size_t n)
49 { os.Put(arr,n); }
50void PPF_TPointer_IO< uint_1 >::Read(PInPersist & is, uint_1 * arr, size_t n)
51 { is.Get(arr,n); }
52
53void PPF_TPointer_IO< int_2 >::Write(POutPersist & os, int_2 const * arr, size_t n)
54 { os.Put(arr,n); }
55void PPF_TPointer_IO< int_2 >::Read(PInPersist & is, int_2 * arr, size_t n)
56 { is.Get(arr,n); }
57void PPF_TPointer_IO< uint_2 >::Write(POutPersist & os, uint_2 const * arr, size_t n)
58 { os.Put(arr,n); }
59void PPF_TPointer_IO< uint_2 >::Read(PInPersist & is, uint_2 * arr, size_t n)
60 { is.Get(arr,n); }
61
62void PPF_TPointer_IO< int_4 >::Write(POutPersist & os, int_4 const * arr, size_t n)
63 { os.Put(arr,n); }
64void PPF_TPointer_IO< int_4 >::Read(PInPersist & is, int_4 * arr, size_t n)
65 { is.Get(arr,n); }
66void PPF_TPointer_IO< uint_4 >::Write(POutPersist & os, uint_4 const * arr, size_t n)
67 { os.Put(arr,n); }
68void PPF_TPointer_IO< uint_4 >::Read(PInPersist & is, uint_4 * arr, size_t n)
69 { is.Get(arr,n); }
70
71void PPF_TPointer_IO< int_8 >::Write(POutPersist & os, int_8 const * arr, size_t n)
72 { os.Put(arr,n); }
73void PPF_TPointer_IO< int_8 >::Read(PInPersist & is, int_8 * arr, size_t n)
74 { is.Get(arr,n); }
75void PPF_TPointer_IO< uint_8 >::Write(POutPersist & os, uint_8 const * arr, size_t n)
76 { os.Put(arr,n); }
77void PPF_TPointer_IO< uint_8 >::Read(PInPersist & is, uint_8 * arr, size_t n)
78 { is.Get(arr,n); }
79
80
81void PPF_TPointer_IO< r_4 >::Write(POutPersist & os, r_4 const * arr, size_t n)
82 { os.Put(arr,n); }
83void PPF_TPointer_IO< r_4 >::Read(PInPersist & is, r_4 * arr, size_t n)
84 { is.Get(arr,n); }
85
86void PPF_TPointer_IO< r_8 >::Write(POutPersist & os, r_8 const * arr, size_t n)
87 { os.Put(arr,n); }
88void PPF_TPointer_IO< r_8 >::Read(PInPersist & is, r_8 * arr, size_t n)
89 { is.Get(arr,n); }
90
91void PPF_TPointer_IO< complex<r_4> >::Write(POutPersist & os, complex<r_4> const * arr, size_t n)
92 { os.Put(arr,n); }
93void PPF_TPointer_IO< complex<r_4> >::Read(PInPersist & is, complex<r_4> * arr, size_t n)
94 { is.Get(arr,n); }
95
96void PPF_TPointer_IO< complex<r_8> >::Write(POutPersist & os, complex<r_8> const * arr, size_t n)
97 { os.Put(arr,n); }
98void PPF_TPointer_IO< complex<r_8> >::Read(PInPersist & is, complex<r_8> * arr, size_t n)
99 { is.Get(arr,n); }
100
101
102} // namespace SOPHYA
103
104#endif /* PPFTPOINTERIO_H_SEEN */
Note: See TracBrowser for help on using the repository browser.