| Index: source/common/charstr.cpp
|
| diff --git a/source/common/charstr.cpp b/source/common/charstr.cpp
|
| index 76723d9790c1f7bdbdaf3a6a8c4ec47411c8c7e0..1b27c683de2f1809ef786043d11bbdb91c69a959 100644
|
| --- a/source/common/charstr.cpp
|
| +++ b/source/common/charstr.cpp
|
| @@ -1,6 +1,6 @@
|
| /*
|
| *******************************************************************************
|
| -* Copyright (C) 2010-2011, International Business Machines
|
| +* Copyright (C) 2010-2015, International Business Machines
|
| * Corporation and others. All Rights Reserved.
|
| *******************************************************************************
|
| * file name: charstr.cpp
|
| @@ -16,6 +16,7 @@
|
| #include "charstr.h"
|
| #include "cmemory.h"
|
| #include "cstring.h"
|
| +#include "uinvchar.h"
|
|
|
| U_NAMESPACE_BEGIN
|
|
|
| @@ -27,6 +28,15 @@ CharString &CharString::copyFrom(const CharString &s, UErrorCode &errorCode) {
|
| return *this;
|
| }
|
|
|
| +int32_t CharString::lastIndexOf(char c) const {
|
| + for(int32_t i=len; i>0;) {
|
| + if(buffer[--i]==c) {
|
| + return i;
|
| + }
|
| + }
|
| + return -1;
|
| +}
|
| +
|
| CharString &CharString::truncate(int32_t newLength) {
|
| if(newLength<0) {
|
| newLength=0;
|
| @@ -101,6 +111,13 @@ char *CharString::getAppendBuffer(int32_t minCapacity,
|
| }
|
|
|
| CharString &CharString::appendInvariantChars(const UnicodeString &s, UErrorCode &errorCode) {
|
| + if(U_FAILURE(errorCode)) {
|
| + return *this;
|
| + }
|
| + if (!uprv_isInvariantUnicodeString(s)) {
|
| + errorCode = U_INVARIANT_CONVERSION_ERROR;
|
| + return *this;
|
| + }
|
| if(ensureCapacity(len+s.length()+1, 0, errorCode)) {
|
| len+=s.extract(0, 0x7fffffff, buffer.getAlias()+len, buffer.getCapacity()-len, US_INV);
|
| }
|
| @@ -142,4 +159,13 @@ CharString &CharString::appendPathPart(const StringPiece &s, UErrorCode &errorCo
|
| return *this;
|
| }
|
|
|
| +CharString &CharString::ensureEndsWithFileSeparator(UErrorCode &errorCode) {
|
| + char c;
|
| + if(U_SUCCESS(errorCode) && len>0 &&
|
| + (c=buffer[len-1])!=U_FILE_SEP_CHAR && c!=U_FILE_ALT_SEP_CHAR) {
|
| + append(U_FILE_SEP_CHAR, errorCode);
|
| + }
|
| + return *this;
|
| +}
|
| +
|
| U_NAMESPACE_END
|
|
|