| #define EXTENDED_FUNCTIONALITY |
| #include "cpputils.h" |
| #include "cstring.h" |
| #include "unicode/ustring.h" |
| |
| /********************************************************************** |
| * Copyright (C) 1999, International Business Machines |
| * Corporation and others. All Rights Reserved. |
| **********************************************************************/ |
| |
| |
| /****************************************************** |
| * Simple utility to set output buffer parameters |
| ******************************************************/ |
| void T_fillOutputParams(const UnicodeString* temp, |
| UChar* result, |
| const int32_t resultLength, |
| int32_t* resultLengthOut, |
| UErrorCode* status) |
| { |
| |
| const int32_t actual = temp->length(); |
| const bool_t overflowed = actual >= resultLength; |
| const int32_t returnedSize = uprv_min(actual, resultLength-1); |
| if ((temp->length() < resultLength) && (result != temp->getUChars()) && (returnedSize > 0)) { |
| u_strcpy(result, temp->getUChars()); |
| } |
| |
| if (resultLength > 0) { |
| result[returnedSize] = 0; |
| } |
| if (resultLengthOut) { |
| *resultLengthOut = actual; |
| if (U_SUCCESS(*status) && overflowed) { |
| *status = U_BUFFER_OVERFLOW_ERROR; |
| } |
| } |
| } |