scuffed-code/icu4c/source/common/cpputils.cpp

39 lines
1.2 KiB
C++

#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;
}
}
}