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

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

Petites correction suite compilation sur SGI-CC , Reza 7/4/2005

File size: 5.8 KB
RevLine 
[2660]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
[2665]39DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]40void PPF_TPointer_IO<char>::Write(POutPersist & os, char const * arr, size_t n)
41 { os.PutBytes(arr,n); }
[2665]42DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]43void PPF_TPointer_IO<char>::Read(PInPersist & is, char * arr, size_t n)
44 { is.GetBytes(arr,n); }
45
[2665]46DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]47void PPF_TPointer_IO< int_1 >::Write(POutPersist & os, int_1 const * arr, size_t n)
48 { os.Put(arr,n); }
[2665]49DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]50void PPF_TPointer_IO< int_1 >::Read(PInPersist & is, int_1 * arr, size_t n)
51 { is.Get(arr,n); }
[2665]52DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]53void PPF_TPointer_IO< uint_1 >::Write(POutPersist & os, uint_1 const * arr, size_t n)
54 { os.Put(arr,n); }
[2665]55DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]56void PPF_TPointer_IO< uint_1 >::Read(PInPersist & is, uint_1 * arr, size_t n)
57 { is.Get(arr,n); }
58
[2665]59DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]60void PPF_TPointer_IO< int_2 >::Write(POutPersist & os, int_2 const * arr, size_t n)
61 { os.Put(arr,n); }
[2665]62DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]63void PPF_TPointer_IO< int_2 >::Read(PInPersist & is, int_2 * arr, size_t n)
64 { is.Get(arr,n); }
[2665]65DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]66void PPF_TPointer_IO< uint_2 >::Write(POutPersist & os, uint_2 const * arr, size_t n)
67 { os.Put(arr,n); }
[2665]68DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]69void PPF_TPointer_IO< uint_2 >::Read(PInPersist & is, uint_2 * arr, size_t n)
70 { is.Get(arr,n); }
71
[2665]72DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]73void PPF_TPointer_IO< int_4 >::Write(POutPersist & os, int_4 const * arr, size_t n)
74 { os.Put(arr,n); }
[2665]75DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]76void PPF_TPointer_IO< int_4 >::Read(PInPersist & is, int_4 * arr, size_t n)
77 { is.Get(arr,n); }
[2665]78DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]79void PPF_TPointer_IO< uint_4 >::Write(POutPersist & os, uint_4 const * arr, size_t n)
80 { os.Put(arr,n); }
[2665]81DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]82void PPF_TPointer_IO< uint_4 >::Read(PInPersist & is, uint_4 * arr, size_t n)
83 { is.Get(arr,n); }
84
[2665]85DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]86void PPF_TPointer_IO< int_8 >::Write(POutPersist & os, int_8 const * arr, size_t n)
87 { os.Put(arr,n); }
[2665]88DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]89void PPF_TPointer_IO< int_8 >::Read(PInPersist & is, int_8 * arr, size_t n)
90 { is.Get(arr,n); }
[2665]91DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]92void PPF_TPointer_IO< uint_8 >::Write(POutPersist & os, uint_8 const * arr, size_t n)
93 { os.Put(arr,n); }
[2665]94DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]95void PPF_TPointer_IO< uint_8 >::Read(PInPersist & is, uint_8 * arr, size_t n)
96 { is.Get(arr,n); }
97
98
[2665]99DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]100void PPF_TPointer_IO< r_4 >::Write(POutPersist & os, r_4 const * arr, size_t n)
101 { os.Put(arr,n); }
[2665]102DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]103void PPF_TPointer_IO< r_4 >::Read(PInPersist & is, r_4 * arr, size_t n)
104 { is.Get(arr,n); }
105
[2665]106DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]107void PPF_TPointer_IO< r_8 >::Write(POutPersist & os, r_8 const * arr, size_t n)
108 { os.Put(arr,n); }
[2665]109DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]110void PPF_TPointer_IO< r_8 >::Read(PInPersist & is, r_8 * arr, size_t n)
111 { is.Get(arr,n); }
112
[2665]113DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]114void PPF_TPointer_IO< complex<r_4> >::Write(POutPersist & os, complex<r_4> const * arr, size_t n)
115 { os.Put(arr,n); }
[2665]116DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]117void PPF_TPointer_IO< complex<r_4> >::Read(PInPersist & is, complex<r_4> * arr, size_t n)
118 { is.Get(arr,n); }
119
[2665]120DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]121void PPF_TPointer_IO< complex<r_8> >::Write(POutPersist & os, complex<r_8> const * arr, size_t n)
122 { os.Put(arr,n); }
[2665]123DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[2660]124void PPF_TPointer_IO< complex<r_8> >::Read(PInPersist & is, complex<r_8> * arr, size_t n)
125 { is.Get(arr,n); }
126
127
128} // namespace SOPHYA
129
130#endif /* PPFTPOINTERIO_H_SEEN */
Note: See TracBrowser for help on using the repository browser.