cartobase  5.1.2
sreader.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 CARTOBASE_OBJECT_SREADER_H
35 #define CARTOBASE_OBJECT_SREADER_H
36 
37 //=============================================================================
38 // H E A D E R F I L E S
39 //=============================================================================
40 
41 #ifndef CARTOBASE_STREAMS_CUIFSTREAM_H
43 #endif
44 #ifndef CARTOBASE_OBJECT_SYNTAX_H
46 #endif
47 
48 namespace carto
49 {
50 
51  //===========================================================================
52  // C L A S S D E C L A R A T I O N
53  //===========================================================================
54 
58  {
59 
60  public:
61 
62  //---------------------------------------------------------------------
64  //---------------------------------------------------------------------
66 
67  SyntaxReader(const std::string& filename);
68  virtual ~SyntaxReader();
69 
71 
72  //---------------------------------------------------------------------
74  //---------------------------------------------------------------------
76 
80  void read(SyntaxSet& rules);
81 
83 
84  protected:
85 
86  //---------------------------------------------------------------------
88  //---------------------------------------------------------------------
90 
95  std::string readUntil(const std::string& s);
96 
100  void skipWhile(const std::string& s);
101 
103 
104  private:
105 
106  //---------------------------------------------------------------------
108  //---------------------------------------------------------------------
110 
112  SyntaxReader(const SyntaxReader&);
113 
115  SyntaxReader& operator=(const SyntaxReader&);
116 
118 
119  //---------------------------------------------------------------------
121  //---------------------------------------------------------------------
123 
127  std::string nextToken();
128 
131  void read(Syntax& syntax);
132 
134 
135  //---------------------------------------------------------------------
137  //---------------------------------------------------------------------
139 
141  std::string _filename;
142 
144  cuifstream _stream;
145 
147  };
148 
149 }
150 
151 //===========================================================================
152 // F U N C T I O N
153 //===========================================================================
154 
156  carto::SyntaxSet& rules );
157 
158 #endif
#define CARTOBASE_API
Read a SyntaxSet from a file.
Definition: sreader.h:58
void read(SyntaxSet &rules)
read the referenced attributes from a stream
virtual ~SyntaxReader()
std::string readUntil(const std::string &s)
read characters not in s
void skipWhile(const std::string &s)
skip characters in s
SyntaxReader(const std::string &filename)
Filtering ifstream - counts lines and skips comments.
Definition: cuifstream.h:64
std::map< std::string, Syntax > SyntaxSet
This lookup table associates a syntactic attribute with its syntax.
Definition: syntax.h:83
SemanticSet Syntax
Specify syntax for syntactic attributes.
Definition: syntax.h:78
CARTOBASE_API carto::SyntaxReader & operator>>(carto::SyntaxReader &reader, carto::SyntaxSet &rules)