Loading...
Searching...
No Matches
ConfigBasedConverter.hpp
/*
* Open Chinese Convert
*
* Copyright 2010-2026 Carbo Kuo and contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include <utility>
#include "Converter.hpp"
namespace opencc {
class ConfigBasedConverter : public Converter {
public:
ConfigBasedConverter(ConverterPtr normConverter, ConverterPtr mainConverter)
: normConverter(std::move(normConverter)),
mainConverter(std::move(mainConverter)) {}
std::string Convert(std::string_view text) const override {
return mainConverter->Convert(normConverter->Convert(text));
}
ConversionInspectionResult Inspect(std::string_view text) const override {
ConversionInspectionResult result;
result.input = text;
ConversionInspectionResult normResult = normConverter->Inspect(text);
ConversionInspectionResult mainResult =
mainConverter->Inspect(normResult.output);
result.pipelineStages = {std::move(normResult), std::move(mainResult)};
result.output = result.pipelineStages.back().output;
return result;
}
SegmentationPtr GetSegmentation() const override {
return mainConverter->GetSegmentation();
}
ConversionChainPtr GetConversionChain() const override {
return mainConverter->GetConversionChain();
}
private:
const ConverterPtr normConverter;
const ConverterPtr mainConverter;
};
} // namespace opencc
opencc::ConfigBasedConverter::GetConversionChain
ConversionChainPtr GetConversionChain() const override
Returns the conversion chain used by this converter, or nullptr if the converter has no single chain ...
Definition ConfigBasedConverter.hpp:62
opencc::ConfigBasedConverter::GetSegmentation
SegmentationPtr GetSegmentation() const override
Returns the segmentation used by this converter, or nullptr if the converter has no single segmentati...
Definition ConfigBasedConverter.hpp:58
opencc::ConfigBasedConverter::Inspect
ConversionInspectionResult Inspect(std::string_view text) const override
Converts text and returns a detailed inspection result that includes the initial segmentation,...
Definition ConfigBasedConverter.hpp:47
opencc::ConfigBasedConverter::Convert
std::string Convert(std::string_view text) const override
Converts text and returns the result.
Definition ConfigBasedConverter.hpp:43
opencc::Converter
Abstract base for full-text converters.
Definition Converter.hpp:48
opencc::ConversionInspectionResult
Full inspection result returned by Converter::Inspect().
Definition ConversionInspection.hpp:52
opencc::ConversionInspectionResult::pipelineStages
std::vector< ConversionInspectionResult > pipelineStages
Per-child-converter inspection results for a PipelineConverter.
Definition ConversionInspection.hpp:68
opencc::ConversionInspectionResult::output
std::string output
The final converted output of this converter.
Definition ConversionInspection.hpp:71
opencc::ConversionInspectionResult::input
std::string input
The original input text passed to Inspect().
Definition ConversionInspection.hpp:54