aimsdata  4.7.0
Neuroimaging data handling
asciidatasourcetraits_aims.h
Go to the documentation of this file.
1 /* This software and supporting documentation are distributed by
2  * Institut Federatif de Recherche 49
3  * CEA/NeuroSpin, Batiment 145,
4  * 91191 Gif-sur-Yvette cedex
5  * France
6  *
7  * This software is governed by the CeCILL-B license under
8  * French law and abiding by the rules of distribution of free software.
9  * You can use, modify and/or redistribute the software under the
10  * terms of the CeCILL-B license as circulated by CEA, CNRS
11  * and INRIA at the following URL "http://www.cecill.info".
12  *
13  * As a counterpart to the access to the source code and rights to copy,
14  * modify and redistribute granted by the license, users are provided only
15  * with a limited warranty and the software's author, the holder of the
16  * economic rights, and the successive licensors have only limited
17  * liability.
18  *
19  * In this respect, the user's attention is drawn to the risks associated
20  * with loading, using, modifying and/or developing or reproducing the
21  * software by the user in light of its specific status of free software,
22  * that may mean that it is complicated to manipulate, and that also
23  * therefore means that it is reserved for developers and experienced
24  * professionals having in-depth computer knowledge. Users are therefore
25  * encouraged to load and test the software's suitability as regards their
26  * requirements in conditions enabling the security of their systems and/or
27  * data to be ensured and, more generally, to use and operate it in the
28  * same conditions as regards security.
29  *
30  * The fact that you are presently reading this means that you have had
31  * knowledge of the CeCILL-B license and that you accept its terms.
32  */
33 
34 #ifndef AIMS_IO_ASCIIDATASOURCETRAITS_AIMS_H
35 #define AIMS_IO_ASCIIDATASOURCETRAITS_AIMS_H
36 
38 #include <aims/vector/vector.h>
39 
40 namespace soma
41 {
42 
43  template<typename T, int D>
45  {
46  public:
47  static bool read( DataSource & ds, AimsVector<T, D> & item );
48  static bool write( DataSource & ds, const AimsVector<T, D> & item );
49  };
50 
51 
52  // -----------
53 
54 #ifndef DOXYGEN_HIDE_INTERNAL_CLASSES
55 
56  template<typename T, int D>
57  inline
59  AimsVector<T, D> & x )
60  {
61  char c;
62 
63  if( !StreamUtil::skip( ds ) )
64  return false;
65  c = ds.getch();
66  if( c != '(' )
67  return false;
68 
69  for( int i=0; i<D; ++i )
70  {
71  if( !StreamUtil::skip( ds ) )
72  return false;
73  if( !AsciiDataSourceTraits<T>::read( ds, x[i] ) )
74  return false;
75  if( i < D-1 )
76  {
77  if( !StreamUtil::skip( ds ) )
78  return false;
79  c = ds.getch();
80  if( c != ',' )
81  return false;
82  }
83  }
84 
85  if( !StreamUtil::skip( ds ) )
86  return false;
87  c = ds.getch();
88  if( c != ')' )
89  return false;
90 
91  return true;
92  }
93 
94 
95  template<typename T, int D>
96  inline
98  DataSource & ds, const AimsVector<T, D> & x )
99  {
100  ds.putch( '(');
101 
102 
103  for( int i=0; i<D; ++i )
104  {
106  if( i < D-1 )
107  {
108  ds.putch( ',' );
109  ds.putch( ' ' );
110  }
111  }
112 
113  ds.putch( ')');
114  return ds.isOpen();
115  }
116 
117 
118  template <typename T, int D>
120  const AimsVector<T, D> & x )
121  {
123  return ds;
124  }
125 
126 #endif
127 
128 }
129 
130 #endif
131 
static bool skip(DataSource &, const std::string &chars=" \, bool ascii=true)
bool write(DataSource &ds, const bool &item)
std::ostream & operator<<(std::ostream &os, const MemoryAllocator &thing)
virtual int putch(int ch)=0
virtual bool isOpen() const=0
virtual int getch()=0
bool read(DataSource &ds, bool &item)