soma-io 6.0.6
awriter.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 SOMAIO_WRITER_AWRITER_H
35#define SOMAIO_WRITER_AWRITER_H
36//--- soma-io ----------------------------------------------------------------
38//--- cartobase --------------------------------------------------------------
39#include <cartobase/config/cartobase_config.h>
40#ifndef CARTOBASE_OBJECT_SYNTAX_H
41 #include <cartobase/object/syntax.h>
42#endif
43#include <cartobase/object/object.h>
44//--- system -----------------------------------------------------------------
45#include <fstream>
46//----------------------------------------------------------------------------
47
48namespace soma
49{
50
51 //==========================================================================
52 // C L A S S D E C L A R A T I O N
53 //==========================================================================
54
57 {
58
59 public:
60
61 //------------------------------------------------------------------------
63 //------------------------------------------------------------------------
65
66 typedef void (*Helper)( const carto::GenericObject&, const std::string&,
67 std::ostream& );
68 typedef std::map<std::string, Helper> HelperSet;
69
71
72 //------------------------------------------------------------------------
74 //------------------------------------------------------------------------
76
81 AttributedWriter( const std::string& filename,
82 const carto::SyntaxSet& rules,
83 const HelperSet& helpers = HelperSet() );
84
89 const HelperSet& helpers = HelperSet() );
90
93
95
96 //------------------------------------------------------------------------
98 //------------------------------------------------------------------------
100
103 void open(const std::string& filename );
104
106 void attach( std::ostream & s );
107
109 void close();
110
111 //------------------------------------------------------------------------
113 //------------------------------------------------------------------------
115
117 virtual std::string name() const;
118
120
121 //------------------------------------------------------------------------
123 //------------------------------------------------------------------------
125
128 bool operator!() const;
129
132 bool is_open() const;
133
135
136 void setSyntax( const carto::SyntaxSet & rules )
137 { _rules = rules; }
139 { return _rules; }
140
141 protected:
142
143 //------------------------------------------------------------------------
145 //------------------------------------------------------------------------
147
150
153 const std::set<std::string>& attributes,
154 std::string::size_type size );
155
156 // DO NOT USE! DEPRECIATED
159
160 // DO NOT USE! DEPRECIATED
162 const std::set<std::string>& attributes,
163 std::string::size_type size )
165
167
168 //------------------------------------------------------------------------
170 //------------------------------------------------------------------------
172
175
177 std::ostream *_stream;
179
181
182 private:
183
184 //------------------------------------------------------------------------
186 //------------------------------------------------------------------------
188
190 void init();
191
193
194 //------------------------------------------------------------------------
196 //------------------------------------------------------------------------
198
200 std::string _filename;
201
203 HelperSet _helpers;
204
206
207 //------------------------------------------------------------------------
209 //------------------------------------------------------------------------
211
214
216 AttributedWriter& operator=( const AttributedWriter& );
217
219 };
220
221}
222
223#endif
#define __deprecated__(msg)
#define CARTOBASE_API
#define __attribute__(a)
void open(const std::string &filename)
open a new file
void(* Helper)(const carto::GenericObject &, const std::string &, std::ostream &)
Definition awriter.h:66
bool is_open() const
is the stream open?
void close()
close or detach the stream
carto::SyntaxSet _rules
rules for every syntactic attribute
Definition awriter.h:174
std::ostream * _stream
C++ stream to write into.
Definition awriter.h:177
void writeAttributes(const carto::GenericObject &object)
void writeAttributes(const carto::GenericObject &object, const std::set< std::string > &attributes, std::string::size_type size)
void attach(std::ostream &s)
attach to an existing (and open) stream
bool operator!() const
return the status of the stream
void setSyntax(const carto::SyntaxSet &rules)
Definition awriter.h:136
virtual std::string name() const
name of the file to read from
void writeAttributes(const carto::GenericObject *object) __attribute__((__deprecated__))
void writeAttributes(const carto::GenericObject *object, const std::set< std::string > &attributes, std::string::size_type size) __attribute__((__deprecated__))
const carto::SyntaxSet & getSyntax() const
Definition awriter.h:138
AttributedWriter(const carto::SyntaxSet &rules, const HelperSet &helpers=HelperSet())
configure the parameters
virtual ~AttributedWriter()
clean up
std::map< std::string, Helper > HelperSet
Definition awriter.h:68
AttributedWriter(const std::string &filename, const carto::SyntaxSet &rules, const HelperSet &helpers=HelperSet())
configure the parameters
std::map< std::string, Syntax > SyntaxSet