IODA Bundle
TextReader.cc
Go to the documentation of this file.
1 /*
2  * (C) Copyright 1996-2012 ECMWF.
3  *
4  * This software is licensed under the terms of the Apache Licence Version 2.0
5  * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
6  * In applying this licence, ECMWF does not waive the privileges and immunities
7  * granted to it by virtue of its status as an intergovernmental organisation nor
8  * does it submit to any jurisdiction.
9  */
10 
11 
12 #include "odc/csv/TextReader.h"
13 
14 #include <fstream>
15 
17 
18 using namespace eckit;
19 
20 namespace odc {
21 
22 //----------------------------------------------------------------------------------------------------------------------
23 
24 TextReader::TextReader(std::istream& input, const std::string& delimiter) :
25  in_(&input),
26  deleteDataHandle_(false),
27  delimiter_(delimiter),
28  iteratorSingleton_(new TextReaderIterator(*this)) {}
29 
30 
31 TextReader::TextReader(const std::string& path, const std::string& delimiter) :
32  in_(new std::ifstream(path.c_str())),
33  deleteDataHandle_(true),
34  delimiter_(delimiter),
35  iteratorSingleton_(new TextReaderIterator(*this)) {}
36 
38  in_(rhs.in_),
39  deleteDataHandle_(rhs.deleteDataHandle_),
40  delimiter_(rhs.delimiter_),
41  iteratorSingleton_(rhs.iteratorSingleton_) {
42 
43  rhs.in_ = 0;
44  rhs.deleteDataHandle_ = false;
45 }
46 
48  std::swap(in_, rhs.in_);
49  std::swap(deleteDataHandle_, rhs.deleteDataHandle_);
50  std::swap(delimiter_, rhs.delimiter_);
51  std::swap(iteratorSingleton_, rhs.iteratorSingleton_);
52  return *this;
53 }
54 
56 {
57  ///if (dataHandle_ && deleteDataHandle_)
58  if (in_ && deleteDataHandle_)
59  {
60  //dataHandle_->close();
61  //delete dataHandle_;
62  delete in_;
63  }
64 }
65 
66 //TextReaderIterator* TextReader::createReadIterator(const PathName& pathName)
67 //{
68 // return new TextReaderIterator(*this, pathName);
69 //}
70 
72 {
73  /// @note YUCK. THis is not a good idom. begin() and end() don't really work...
74  return iteratorSingleton_;
75 }
76 
78 
79 //----------------------------------------------------------------------------------------------------------------------
80 
81 } // namespace odc
std::string delimiter_
Definition: TextReader.h:66
TextReader & operator=(TextReader &&)
Definition: TextReader.cc:47
iterator iteratorSingleton_
Definition: TextReader.h:71
bool deleteDataHandle_
Definition: TextReader.h:65
iterator end() const
Definition: TextReader.cc:77
virtual ~TextReader()
Definition: TextReader.cc:55
std::istream * in_
Definition: TextReader.h:64
iterator begin()
Definition: TextReader.cc:71
IteratorProxy< TextReaderIterator, TextReader, double > iterator
Definition: TextReader.h:38
TextReader(std::istream &, const std::string &delimiter)
Definition: TextReader.cc:24
Definition: ColumnInfo.h:23
Definition: encode.cc:30