Open Chinese Convert: ConfigBasedConverter.hpp Source File

Open Chinese Convert 1.4.0+g4813e9d34.dirty A project for conversion between Traditional and Simplified Chinese

Loading...
Searching...
No Matches
ConfigBasedConverter.hpp
1/*
2 * Open Chinese Convert
3 *
4 * Copyright 2010-2026 Carbo Kuo and contributors
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19#pragma once
20
21#include <utility>
22
23#include "Converter.hpp"
24
25namespace opencc {
37 class ConfigBasedConverter : public Converter {
38public:
39 ConfigBasedConverter(ConverterPtr normConverter, ConverterPtr mainConverter)
40 : normConverter(std::move(normConverter)),
41 mainConverter(std::move(mainConverter)) {}
42
43 std::string Convert(std::string_view text) const override {
44 return mainConverter->Convert(normConverter->Convert(text));
45 }
46
47 ConversionInspectionResult Inspect(std::string_view text) const override {
48 ConversionInspectionResult result;
49 result.input = text;
50 ConversionInspectionResult normResult = normConverter->Inspect(text);
51 ConversionInspectionResult mainResult =
52 mainConverter->Inspect(normResult.output);
53 result.pipelineStages = {std::move(normResult), std::move(mainResult)};
54 result.output = result.pipelineStages.back().output;
55 return result;
56 }
57
58 SegmentationPtr GetSegmentation() const override {
59 return mainConverter->GetSegmentation();
60 }
61
62 ConversionChainPtr GetConversionChain() const override {
63 return mainConverter->GetConversionChain();
64 }
65
66private:
67 const ConverterPtr normConverter;
68 const ConverterPtr mainConverter;
69};
70} // 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