From 2f290f1d6d84be68540c5b1d3ada7fa6c133c2ff Mon Sep 17 00:00:00 2001 From: Hieu Hoang Date: Fri, 3 Oct 2014 16:08:15 +0100 Subject: [PATCH] standardize GetIOWrapper(). --- moses-chart-cmd/Main.cpp | 31 +-------------------------- moses-chart-cmd/Main.h | 6 ------ moses-cmd/Main.cpp | 2 +- moses/IOWrapper.cpp | 45 ++++++++++++++++++++-------------------- moses/IOWrapper.h | 3 ++- moses/IOWrapperChart.cpp | 30 +++++++++++++++++++++++++++ moses/IOWrapperChart.h | 2 ++ 7 files changed, 58 insertions(+), 61 deletions(-) diff --git a/moses-chart-cmd/Main.cpp b/moses-chart-cmd/Main.cpp index 74949b2de..5041d6d87 100644 --- a/moses-chart-cmd/Main.cpp +++ b/moses-chart-cmd/Main.cpp @@ -123,7 +123,7 @@ int main(int argc, char* argv[]) UTIL_THROW_IF2(!staticData.IsChart(), "Must be SCFG model"); // set up read/writing class - IOWrapperChart *ioWrapper = GetIOWrapper(staticData); + IOWrapperChart *ioWrapper = IOWrapperChart::GetIOWrapper(staticData); // check on weights const ScoreComponentCollection& weights = staticData.GetAllWeights(); @@ -188,32 +188,3 @@ int main(int argc, char* argv[]) #endif } -IOWrapperChart *GetIOWrapper(const StaticData &staticData) -{ - IOWrapperChart *ioWrapper; - const std::vector &inputFactorOrder = staticData.GetInputFactorOrder() - ,&outputFactorOrder = staticData.GetOutputFactorOrder(); - FactorMask inputFactorUsed(inputFactorOrder); - - // io - if (staticData.GetParam("input-file").size() == 1) { - VERBOSE(2,"IO from File" << endl); - string filePath = staticData.GetParam("input-file")[0]; - - ioWrapper = new IOWrapperChart(inputFactorOrder, outputFactorOrder, inputFactorUsed - , staticData.GetNBestSize() - , staticData.GetNBestFilePath() - , filePath); - } else { - VERBOSE(1,"IO from STDOUT/STDIN" << endl); - ioWrapper = new IOWrapperChart(inputFactorOrder, outputFactorOrder, inputFactorUsed - , staticData.GetNBestSize() - , staticData.GetNBestFilePath()); - } - ioWrapper->ResetTranslationId(); - - IFVERBOSE(1) - PrintUserTime("Created input-output object"); - - return ioWrapper; -} diff --git a/moses-chart-cmd/Main.h b/moses-chart-cmd/Main.h index c57321f04..5c660b826 100644 --- a/moses-chart-cmd/Main.h +++ b/moses-chart-cmd/Main.h @@ -36,10 +36,4 @@ POSSIBILITY OF SUCH DAMAGE. #include "moses/StaticData.h" -namespace MosesChartCmd -{ -class IOWrapperChart; -} - int main(int argc, char* argv[]); -MosesChartCmd::IOWrapperChart *GetIOWrapper(const Moses::StaticData &staticData); diff --git a/moses-cmd/Main.cpp b/moses-cmd/Main.cpp index 398a3a824..994837d4a 100644 --- a/moses-cmd/Main.cpp +++ b/moses-cmd/Main.cpp @@ -116,7 +116,7 @@ int main(int argc, char** argv) srand(time(NULL)); // set up read/writing class - IOWrapper* ioWrapper = GetIOWrapper(staticData); + IOWrapper* ioWrapper = IOWrapper::GetIOWrapper(staticData); if (!ioWrapper) { cerr << "Error; Failed to create IO object" << endl; exit(1); diff --git a/moses/IOWrapper.cpp b/moses/IOWrapper.cpp index a4d28bc1d..2a0bd38e9 100644 --- a/moses/IOWrapper.cpp +++ b/moses/IOWrapper.cpp @@ -633,29 +633,7 @@ void IOWrapper::OutputLatticeMBRNBestList(const vector& solu OutputLatticeMBRNBest(*m_nBestStream, solutions,translationId); } -bool ReadInput(IOWrapper &ioWrapper, InputTypeEnum inputType, InputType*& source) -{ - if (source) delete source; - switch(inputType) { - case SentenceInput: - source = ioWrapper.GetInput(new Sentence); - break; - case ConfusionNetworkInput: - source = ioWrapper.GetInput(new ConfusionNet); - break; - case WordLatticeInput: - source = ioWrapper.GetInput(new WordLattice); - break; - default: - TRACE_ERR("Unknown input type: " << inputType << "\n"); - source = NULL; - } - return (source ? true : false); -} - - - -IOWrapper *GetIOWrapper(const StaticData &staticData) +IOWrapper *IOWrapper::GetIOWrapper(const StaticData &staticData) { IOWrapper *ioWrapper; const std::vector &inputFactorOrder = staticData.GetInputFactorOrder() @@ -680,5 +658,26 @@ IOWrapper *GetIOWrapper(const StaticData &staticData) return ioWrapper; } + +bool ReadInput(IOWrapper &ioWrapper, InputTypeEnum inputType, InputType*& source) +{ + if (source) delete source; + switch(inputType) { + case SentenceInput: + source = ioWrapper.GetInput(new Sentence); + break; + case ConfusionNetworkInput: + source = ioWrapper.GetInput(new ConfusionNet); + break; + case WordLatticeInput: + source = ioWrapper.GetInput(new WordLattice); + break; + default: + TRACE_ERR("Unknown input type: " << inputType << "\n"); + source = NULL; + } + return (source ? true : false); +} + } diff --git a/moses/IOWrapper.h b/moses/IOWrapper.h index b76adf8bd..3ff492179 100644 --- a/moses/IOWrapper.h +++ b/moses/IOWrapper.h @@ -95,6 +95,8 @@ protected: Moses::OutputCollector *m_latticeSamplesCollector; public: + static IOWrapper *GetIOWrapper(const Moses::StaticData &staticData); + IOWrapper(const std::vector &inputFactorOrder , const std::vector &outputFactorOrder , const Moses::FactorMask &inputFactorUsed @@ -147,7 +149,6 @@ public: }; -IOWrapper *GetIOWrapper(const Moses::StaticData &staticData); bool ReadInput(IOWrapper &ioWrapper, Moses::InputTypeEnum inputType, Moses::InputType*& source); void OutputLanguageModelOrder(std::ostream &out, const Moses::Hypothesis *hypo, Moses::Manager &manager); void OutputBestSurface(std::ostream &out, const Moses::Hypothesis *hypo, const std::vector &outputFactorOrder, char reportSegmentation, bool reportAllFactors); diff --git a/moses/IOWrapperChart.cpp b/moses/IOWrapperChart.cpp index 31d298fdd..08553ad66 100644 --- a/moses/IOWrapperChart.cpp +++ b/moses/IOWrapperChart.cpp @@ -1016,5 +1016,35 @@ void IOWrapperChart::OutputAlignment(vector< set > &retAlignmentsS2T, co } } +IOWrapperChart *IOWrapperChart::GetIOWrapper(const StaticData &staticData) +{ + IOWrapperChart *ioWrapper; + const std::vector &inputFactorOrder = staticData.GetInputFactorOrder() + ,&outputFactorOrder = staticData.GetOutputFactorOrder(); + FactorMask inputFactorUsed(inputFactorOrder); + + // io + if (staticData.GetParam("input-file").size() == 1) { + VERBOSE(2,"IO from File" << endl); + string filePath = staticData.GetParam("input-file")[0]; + + ioWrapper = new IOWrapperChart(inputFactorOrder, outputFactorOrder, inputFactorUsed + , staticData.GetNBestSize() + , staticData.GetNBestFilePath() + , filePath); + } else { + VERBOSE(1,"IO from STDOUT/STDIN" << endl); + ioWrapper = new IOWrapperChart(inputFactorOrder, outputFactorOrder, inputFactorUsed + , staticData.GetNBestSize() + , staticData.GetNBestFilePath()); + } + ioWrapper->ResetTranslationId(); + + IFVERBOSE(1) + PrintUserTime("Created input-output object"); + + return ioWrapper; +} + } diff --git a/moses/IOWrapperChart.h b/moses/IOWrapperChart.h index 1194e43b3..cc287b450 100644 --- a/moses/IOWrapperChart.h +++ b/moses/IOWrapperChart.h @@ -113,6 +113,8 @@ protected: , std::string &lastName ); public: + static IOWrapperChart *GetIOWrapper(const Moses::StaticData &staticData); + IOWrapperChart(const std::vector &inputFactorOrder , const std::vector &outputFactorOrder , const Moses::FactorMask &inputFactorUsed