gravatar
alpar (Alpar Juttner)
alpar@cs.elte.hu
*Maps() -> *MapNames() in LgfContents
0 1 0
default
1 file changed with 6 insertions and 6 deletions:
↑ Collapse diff ↑
Show white space 192 line context
... ...
@@ -2095,270 +2095,270 @@
2095 2095
  /// std::cout << "The name of second arc map : " 
2096 2096
  ///           << contents.arcMaps(0)[1] << std::endl;
2097 2097
  ///\endcode
2098 2098
  class LgfContents {    
2099 2099
  private:
2100 2100

	
2101 2101
    std::istream* _is;
2102 2102
    bool local_is;
2103 2103

	
2104 2104
    std::vector<std::string> _node_sections;
2105 2105
    std::vector<std::string> _edge_sections;
2106 2106
    std::vector<std::string> _attribute_sections;
2107 2107
    std::vector<std::string> _extra_sections;
2108 2108

	
2109 2109
    std::vector<bool> _arc_sections;
2110 2110

	
2111 2111
    std::vector<std::vector<std::string> > _node_maps;
2112 2112
    std::vector<std::vector<std::string> > _edge_maps;
2113 2113

	
2114 2114
    std::vector<std::vector<std::string> > _attributes;
2115 2115

	
2116 2116

	
2117 2117
    int line_num;
2118 2118
    std::istringstream line;
2119 2119
    
2120 2120
  public:
2121 2121

	
2122 2122
    /// \brief Constructor
2123 2123
    ///
2124 2124
    /// Construct an \e LGF contents reader, which reads from the given
2125 2125
    /// input stream.
2126 2126
    LgfContents(std::istream& is) 
2127 2127
      : _is(&is), local_is(false) {}
2128 2128

	
2129 2129
    /// \brief Constructor
2130 2130
    ///
2131 2131
    /// Construct an \e LGF contents reader, which reads from the given
2132 2132
    /// file.
2133 2133
    LgfContents(const std::string& fn) 
2134 2134
      : _is(new std::ifstream(fn.c_str())), local_is(true) {}
2135 2135

	
2136 2136
    /// \brief Constructor
2137 2137
    ///
2138 2138
    /// Construct an \e LGF contents reader, which reads from the given
2139 2139
    /// file.
2140 2140
    LgfContents(const char* fn)
2141 2141
      : _is(new std::ifstream(fn)), local_is(true) {}
2142 2142

	
2143 2143
    /// \brief Copy constructor
2144 2144
    ///
2145 2145
    /// The copy constructor transfers all data from the other reader,
2146 2146
    /// therefore the copied reader will not be usable more. 
2147 2147
    LgfContents(LgfContents& other)
2148 2148
      : _is(other._is), local_is(other.local_is) {
2149 2149
      
2150 2150
      other._is = 0;
2151 2151
      other.local_is = false;
2152 2152
      
2153 2153
      _node_sections.swap(other._node_sections);
2154 2154
      _edge_sections.swap(other._edge_sections);
2155 2155
      _attribute_sections.swap(other._attribute_sections);
2156 2156
      _extra_sections.swap(other._extra_sections);
2157 2157

	
2158 2158
      _arc_sections.swap(other._arc_sections);
2159 2159

	
2160 2160
      _node_maps.swap(other._node_maps);
2161 2161
      _edge_maps.swap(other._edge_maps);
2162 2162
      _attributes.swap(other._attributes);
2163 2163
    }
2164 2164
    
2165 2165
    /// \brief Destructor
2166 2166
    ~LgfContents() {
2167 2167
      if (local_is) delete _is;
2168 2168
    }
2169 2169

	
2170 2170

	
2171 2171
    /// \name Node sections
2172 2172
    /// @{
2173 2173

	
2174 2174
    /// \brief Gives back the number of node sections in the file.
2175 2175
    ///
2176 2176
    /// Gives back the number of node sections in the file.
2177 2177
    int nodeSectionNum() const {
2178 2178
      return _node_sections.size();
2179 2179
    }
2180 2180

	
2181 2181
    /// \brief Returns the section name at the given position. 
2182 2182
    ///
2183 2183
    /// Returns the section name at the given position. 
2184 2184
    const std::string& nodeSection(int i) const {
2185 2185
      return _node_sections[i];
2186 2186
    }
2187 2187

	
2188 2188
    /// \brief Gives back the node maps for the given section.
2189 2189
    ///
2190 2190
    /// Gives back the node maps for the given section.
2191
    const std::vector<std::string>& nodeMaps(int i) const {
2191
    const std::vector<std::string>& nodeMapNames(int i) const {
2192 2192
      return _node_maps[i];
2193 2193
    }
2194 2194

	
2195 2195
    /// @}
2196 2196

	
2197 2197
    /// \name Arc/Edge sections 
2198 2198
    /// @{
2199 2199

	
2200 2200
    /// \brief Gives back the number of arc/edge sections in the file.
2201 2201
    ///
2202 2202
    /// Gives back the number of arc/edge sections in the file.
2203 2203
    /// \note It is synonym of \c edgeSectionNum().
2204 2204
    int arcSectionNum() const {
2205 2205
      return _edge_sections.size();
2206 2206
    }
2207 2207

	
2208 2208
    /// \brief Returns the section name at the given position. 
2209 2209
    ///
2210 2210
    /// Returns the section name at the given position. 
2211 2211
    /// \note It is synonym of \c edgeSection().
2212 2212
    const std::string& arcSection(int i) const {
2213 2213
      return _edge_sections[i];
2214 2214
    }
2215 2215

	
2216 2216
    /// \brief Gives back the arc/edge maps for the given section.
2217 2217
    ///
2218 2218
    /// Gives back the arc/edge maps for the given section.
2219
    /// \note It is synonym of \c edgeMaps().
2220
    const std::vector<std::string>& arcMaps(int i) const {
2219
    /// \note It is synonym of \c edgeMapNames().
2220
    const std::vector<std::string>& arcMapNames(int i) const {
2221 2221
      return _edge_maps[i];
2222 2222
    }
2223 2223

	
2224 2224
    /// @}
2225 2225

	
2226 2226
    /// \name Synonyms
2227 2227
    /// @{
2228 2228

	
2229 2229
    /// \brief Gives back the number of arc/edge sections in the file.
2230 2230
    ///
2231 2231
    /// Gives back the number of arc/edge sections in the file.
2232 2232
    /// \note It is synonym of \c arcSectionNum().
2233 2233
    int edgeSectionNum() const {
2234 2234
      return _edge_sections.size();
2235 2235
    }
2236 2236

	
2237 2237
    /// \brief Returns the section name at the given position. 
2238 2238
    ///
2239 2239
    /// Returns the section name at the given position. 
2240 2240
    /// \note It is synonym of \c arcSection().
2241 2241
    const std::string& edgeSection(int i) const {
2242 2242
      return _edge_sections[i];
2243 2243
    }
2244 2244

	
2245 2245
    /// \brief Gives back the edge maps for the given section.
2246 2246
    ///
2247 2247
    /// Gives back the edge maps for the given section.
2248
    /// \note It is synonym of \c arcMaps().
2249
    const std::vector<std::string>& edgeMaps(int i) const {
2248
    /// \note It is synonym of \c arcMapNames().
2249
    const std::vector<std::string>& edgeMapNames(int i) const {
2250 2250
      return _edge_maps[i];
2251 2251
    }
2252 2252

	
2253 2253
    /// @}
2254 2254

	
2255 2255
    /// \name Attribute sections   
2256 2256
    /// @{
2257 2257

	
2258 2258
    /// \brief Gives back the number of attribute sections in the file.
2259 2259
    ///
2260 2260
    /// Gives back the number of attribute sections in the file.
2261 2261
    int attributeSectionNum() const {
2262 2262
      return _attribute_sections.size();
2263 2263
    }
2264 2264

	
2265 2265
    /// \brief Returns the section name at the given position. 
2266 2266
    ///
2267 2267
    /// Returns the section name at the given position. 
2268
    const std::string& attributeSection(int i) const {
2268
    const std::string& attributeSectionNames(int i) const {
2269 2269
      return _attribute_sections[i];
2270 2270
    }
2271 2271

	
2272 2272
    /// \brief Gives back the attributes for the given section.
2273 2273
    ///
2274 2274
    /// Gives back the attributes for the given section.
2275 2275
    const std::vector<std::string>& attributes(int i) const {
2276 2276
      return _attributes[i];
2277 2277
    }
2278 2278

	
2279 2279
    /// @}
2280 2280

	
2281 2281
    /// \name Extra sections   
2282 2282
    /// @{
2283 2283

	
2284 2284
    /// \brief Gives back the number of extra sections in the file.
2285 2285
    ///
2286 2286
    /// Gives back the number of extra sections in the file.
2287 2287
    int extraSectionNum() const {
2288 2288
      return _extra_sections.size();
2289 2289
    }
2290 2290

	
2291 2291
    /// \brief Returns the extra section type at the given position. 
2292 2292
    ///
2293 2293
    /// Returns the section type at the given position. 
2294 2294
    const std::string& extraSection(int i) const {
2295 2295
      return _extra_sections[i];
2296 2296
    }
2297 2297

	
2298 2298
    /// @}
2299 2299

	
2300 2300
  private:
2301 2301

	
2302 2302
    bool readLine() {
2303 2303
      std::string str;
2304 2304
      while(++line_num, std::getline(*_is, str)) {
2305 2305
	line.clear(); line.str(str);
2306 2306
	char c;
2307 2307
	if (line >> std::ws >> c && c != '#') {
2308 2308
	  line.putback(c);
2309 2309
	  return true;
2310 2310
	}
2311 2311
      }
2312 2312
      return false;
2313 2313
    }
2314 2314

	
2315 2315
    bool readSuccess() {
2316 2316
      return static_cast<bool>(*_is);
2317 2317
    }
2318 2318

	
2319 2319
    void skipSection() {
2320 2320
      char c;
2321 2321
      while (readSuccess() && line >> c && c != '@') {
2322 2322
	readLine();
2323 2323
      }
2324 2324
      line.putback(c);
2325 2325
    }
2326 2326

	
2327 2327
    void readMaps(std::vector<std::string>& maps) {
2328 2328
      if (!readLine()) 
2329 2329
	throw DataFormatError("Cannot find map captions");
2330 2330
      std::string map;
2331 2331
      while (_reader_bits::readToken(line, map)) {
2332 2332
	maps.push_back(map);
2333 2333
      }
2334 2334
    }
2335 2335

	
2336 2336
    void readAttributes(std::vector<std::string>& attrs) {
2337 2337
      readLine();
2338 2338
      char c;
2339 2339
      while (readSuccess() && line >> c && c != '@') {
2340 2340
	line.putback(c);
2341 2341
	std::string attr;
2342 2342
	_reader_bits::readToken(line, attr);
2343 2343
	attrs.push_back(attr);
2344 2344
	readLine();
2345 2345
      }
2346 2346
      line.putback(c);
2347 2347
    }
2348 2348

	
2349 2349
  public:
2350 2350

	
2351 2351
    /// \name Execution of the contents reader    
2352 2352
    /// @{
2353 2353

	
2354 2354
    /// \brief Start the reading
2355 2355
    ///
2356 2356
    /// This function starts the reading
2357 2357
    void run() {
2358 2358

	
2359 2359
      readLine();
2360 2360
      skipSection();
2361 2361

	
2362 2362
      while (readSuccess()) {
2363 2363

	
2364 2364
	char c;
0 comments (0 inline)