00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "InputFileStream.h"
00023 #include "gzfilebuf.h"
00024 #include <iostream>
00025
00026 using namespace std;
00027
00028 namespace Moses
00029 {
00030 InputFileStream::InputFileStream(const std::string &filePath)
00031 : std::istream(NULL)
00032 , m_streambuf(NULL)
00033 {
00034 if (filePath.size() > 3 &&
00035 filePath.substr(filePath.size() - 3, 3) == ".gz") {
00036 m_streambuf = new gzfilebuf(filePath.c_str());
00037 } else {
00038 std::filebuf* fb = new std::filebuf();
00039 fb = fb->open(filePath.c_str(), std::ios::in);
00040 if (! fb) {
00041 cerr << "Can't read " << filePath.c_str() << endl;
00042 exit(1);
00043 }
00044 m_streambuf = fb;
00045 }
00046 this->init(m_streambuf);
00047 }
00048
00049 InputFileStream::~InputFileStream()
00050 {
00051 delete m_streambuf;
00052 m_streambuf = NULL;
00053 }
00054
00055 void InputFileStream::Close()
00056 {
00057 }
00058
00059
00060 }
00061