blob: a901218da192168d45a820a172bba094fac9f3a0 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <zircon/compiler.h>
#include <zircon/types.h>
#ifndef SRC_FIRMWARE_GIGABOOT_SRC_UTF_CONVERSION_H_
#define SRC_FIRMWARE_GIGABOOT_SRC_UTF_CONVERSION_H_
// Attempt to convert a UTF16 string to UTF8 using an unspecified endianness (utf16_*).
//
// src : a pointer to the source string, encoded using UTF16
// src_len : The number of code units (uint16_t) in the source to process.
// dst : a pointer to the buffer which will hold the null terminated result
// of the conversion.
// dst_len : A pointer to the length of of the destination buffer (in bytes).
// Afterwards, this parameter will be updated to indicate the total
// number of bytes it would take to hold a null terminated
// representation of the UTF8 string, even if there was not enough
// room in the destination buffer to perform a full conversion.
//
// Note: Embedded nulls within the source will be processed and encoded. *No*
// null termination of the destination buffer will be performed by default.
zx_status_t utf16_to_utf8(const uint16_t* src, size_t src_len, uint8_t* dst, size_t* dst_len);
// Attempt to convert a UTF8 string to UTF16 using an unspecified endianness (utf16_*).
//
// src : a pointer to the source string, encoded using UTF8
// src_len : The number of bytes in the source to process.
// dst : a pointer to the buffer which will hold the null terminated result
// of the conversion.
// dst_len : A pointer to the length of of the destination buffer (in bytes).
// Afterwards, this parameter will be updated to indicate the total
// number of bytes it would take to hold a null terminated
// representation of the UTF8 string, even if there was not enough
// room in the destination buffer to perform a full conversion.
//
// Note: Embedded nulls within the source will be processed and encoded. *No*
// null termination of the destination buffer will be performed by default.
zx_status_t utf8_to_utf16(const uint8_t* src, size_t src_len, uint16_t* dst, size_t* dst_len);
#endif // SRC_FIRMWARE_GIGABOOT_SRC_UTF_CONVERSION_H_