blob: 9cb0136d09d0f40b19184a5ac8f8e19359ddf204 [file] [log] [blame]
#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)
{
int32_t actual = temp->length();
if (resultLength > 0) {
// copy the contents; extract() will check if it needs to copy anything at all
temp->extract(0, resultLength - 1, result, 0);
// zero-terminate the result buffer
if (actual < resultLength) {
result[actual] = 0;
} else {
result[resultLength - 1] = 0;
}
}
// set the output length to the actual string length
if (resultLengthOut != 0) {
*resultLengthOut = actual;
}
// set the error code according to the necessary buffer length
if (actual >= resultLength && U_SUCCESS(*status)) {
*status = U_BUFFER_OVERFLOW_ERROR;
}
}