/*!****************************************************************************
@file PVRTUnicode.h
@copyright Copyright (c) Imagination Technologies Limited.
@brief A small collection of functions used to decode Unicode formats to
individual code points.
******************************************************************************/
#ifndef _PVRTUNICODE_H_
#define _PVRTUNICODE_H_
#include "PVRTGlobal.h"
#include "PVRTError.h"
#include "PVRTArray.h"
/****************************************************************************
** Functions
****************************************************************************/
/*!***************************************************************************
@brief Decodes a UTF8-encoded string in to Unicode code points
(UTF32). If pUTF8 is not null terminated, the results are
undefined.
@param[in] pUTF8 A UTF8 string, which is null terminated.
@param[out] aUTF32 An array of Unicode code points.
@return Success or failure.
*****************************************************************************/
EPVRTError PVRTUnicodeUTF8ToUTF32( const PVRTuint8* const pUTF8, CPVRTArray<PVRTuint32>& aUTF32);
/*!***************************************************************************
@brief Decodes a UTF16-encoded string in to Unicode code points
(UTF32). If pUTF16 is not null terminated, the results are
undefined.
@param[in] pUTF16 A UTF16 string, which is null terminated.
@param[out] aUTF32 An array of Unicode code points.
@return Success or failure.
*****************************************************************************/
EPVRTError PVRTUnicodeUTF16ToUTF32(const PVRTuint16* const pUTF16, CPVRTArray<PVRTuint32>& aUTF32);
/*!***************************************************************************
@brief Calculates the length of a UTF8 string. If pUTF8 is
not null terminated, the results are undefined.
@param[in] pUTF8 A UTF8 string, which is null terminated.
@return The length of the string, in Unicode code points.
*****************************************************************************/
unsigned int PVRTUnicodeUTF8Length(const PVRTuint8* const pUTF8);
/*!***************************************************************************
@brief Calculates the length of a UTF16 string.
If pUTF16 is not null terminated, the results are
undefined.
@param[in] pUTF16 A UTF16 string, which is null terminated.
@return The length of the string, in Unicode code points.
*****************************************************************************/
unsigned int PVRTUnicodeUTF16Length(const PVRTuint16* const pUTF16);
/*!***************************************************************************
@brief Checks whether the encoding of a UTF8 string is valid.
If pUTF8 is not null terminated, the results are undefined.
@param[in] pUTF8 A UTF8 string, which is null terminated.
@return true or false
*****************************************************************************/
bool PVRTUnicodeValidUTF8(const PVRTuint8* const pUTF8);
#endif /* _PVRTUNICODE_H_ */
/*****************************************************************************
End of file (PVRTUnicode.h)
*****************************************************************************/