* Copyright (c) 2021 Huawei Device Co., Ltd.
* 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.
*/
#include "i18n_break_iterator.h"
#include "brkiter.h"
#include "string"
#include "utypes.h"
namespace OHOS {
namespace Global {
namespace I18n {
I18nBreakIterator::I18nBreakIterator(std::string localeTag)
{
UErrorCode status = U_ZERO_ERROR;
iter = icu::BreakIterator::createLineInstance(localeTag.c_str(), status);
if (!U_SUCCESS(status)) {
if (iter != nullptr) {
delete iter;
}
iter = nullptr;
}
}
I18nBreakIterator::~I18nBreakIterator()
{
if (iter != nullptr) {
delete iter;
}
}
int32_t I18nBreakIterator::Current()
{
if (iter != nullptr) {
return iter->current();
}
return OFF_BOUND;
}
int32_t I18nBreakIterator::First()
{
if (iter != nullptr) {
return iter->first();
}
return OFF_BOUND;
}
int32_t I18nBreakIterator::Last()
{
if (iter != nullptr) {
return iter->last();
}
return OFF_BOUND;
}
int32_t I18nBreakIterator::Previous()
{
if (iter != nullptr) {
return iter->previous();
}
return OFF_BOUND;
}
int32_t I18nBreakIterator::Next(int32_t number)
{
if (iter != nullptr) {
return iter->next(number);
}
return OFF_BOUND;
}
int32_t I18nBreakIterator::Next()
{
if (iter != nullptr) {
return iter->next();
}
return OFF_BOUND;
}
int32_t I18nBreakIterator::Following(int32_t offset)
{
if (iter != nullptr) {
return iter->following(offset);
}
return OFF_BOUND;
}
void I18nBreakIterator::SetText(const char *text)
{
if (iter != nullptr) {
ftext = text;
iter->setText(ftext);
}
}
void I18nBreakIterator::GetText(std::string &str)
{
if (iter != nullptr) {
ftext.toUTF8String(str);
}
}
bool I18nBreakIterator::IsBoundary(int32_t offset)
{
if (iter != nullptr) {
return iter->isBoundary(offset);
}
return false;
}
}
}
}