summaryrefslogtreecommitdiffstats
path: root/RedfishPkg/Include/Library
diff options
context:
space:
mode:
authorAbner Chang <abner.chang@hpe.com>2020-12-08 09:56:56 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2021-01-09 03:08:51 +0000
commit805b8b88375ee44991abcece86e385319a9c5fae (patch)
tree473fe2e32bd123ee153572aa237af7cbe37d483f /RedfishPkg/Include/Library
parent9783767fcfc253c74fe3ad87abf74d17e1fe6399 (diff)
downloadedk2-805b8b88375ee44991abcece86e385319a9c5fae.tar.gz
edk2-805b8b88375ee44991abcece86e385319a9c5fae.tar.bz2
edk2-805b8b88375ee44991abcece86e385319a9c5fae.zip
RedfishPkg/Ucs2Utf8lib: UCS2 to UFT8 manipulation library
This library provides UCS2 to UFT8 or vise versa functions to manipulate UCS2/UTF8 strings. This library is currently used by edk2 port of open source jansson library. Signed-off-by: Abner Chang <abner.chang@hpe.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Nickle Wang <nickle.wang@hpe.com> Cc: Peter O'Hanley <peter.ohanley@hpe.com> Reviewed-by: Nickle Wang <nickle.wang@hpe.com> Acked-by: Leif Lindholm <leif@nuviainc.com> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
Diffstat (limited to 'RedfishPkg/Include/Library')
-rw-r--r--RedfishPkg/Include/Library/BaseUcs2Utf8Lib.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/RedfishPkg/Include/Library/BaseUcs2Utf8Lib.h b/RedfishPkg/Include/Library/BaseUcs2Utf8Lib.h
new file mode 100644
index 0000000000..c6989617df
--- /dev/null
+++ b/RedfishPkg/Include/Library/BaseUcs2Utf8Lib.h
@@ -0,0 +1,61 @@
+/** @file
+ UCS2 to UTF8 manipulation library header file.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef BASE_UCS2UTF8_LIB_H_
+#define BASE_UCS2UTF8_LIB_H_
+
+///
+/// L"\u0000"
+///
+#define UNICODE_FORMAT_LEN 6
+#define UNICODE_FORMAT_CHAR_LEN 2
+#define UNICODE_FORMAT_CHAR_SIZE 3
+
+#define UTF8_BUFFER_FOR_UCS2_MAX_SIZE 3
+
+/**
+ Convert a UCS2 string to a UTF8 encoded string.
+
+ @param[in] Ucs2Str The provided UCS2 string.
+ @param[out] Utf8StrAddr The converted UTF8 string address. Caller
+ is responsible for Free this string.
+
+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
+ @retval EFI_OUT_OF_RESOURCES System runs out of resources.
+ @retval EFI_SUCCESS The UTF8 encoded string has been converted.
+
+**/
+EFI_STATUS
+UCS2StrToUTF8 (
+ IN CHAR16 *Ucs2Str,
+ OUT CHAR8 **Utf8StrAddr
+ );
+
+/**
+ Convert a UTF8 encoded string to a UCS2 string.
+
+ @param[in] Utf8Str The provided UTF8 encoded string.
+ @param[out] Ucs2StrAddr The converted UCS2 string address. Caller
+ is responsible for Free this string.
+
+ @retval EFI_INVALID_PARAMETER The UTF8 encoded string is not valid to
+ convert to UCS2 string.
+ One or more parameters are invalid.
+ @retval EFI_OUT_OF_RESOURCES System runs out of resources.
+ @retval EFI_SUCCESS The UCS2 string has been converted.
+
+**/
+EFI_STATUS
+UTF8StrToUCS2 (
+ IN CHAR8 *Utf8Str,
+ OUT CHAR16 **Ucs2StrAddr
+ );
+
+#endif