114cf0368Sopenharmony_ci/*
214cf0368Sopenharmony_ci* Copyright (c) 2023 Huawei Device Co., Ltd.
314cf0368Sopenharmony_ci* Licensed under the Apache License, Version 2.0 (the "License");
414cf0368Sopenharmony_ci* you may not use this file except in compliance with the License.
514cf0368Sopenharmony_ci* You may obtain a copy of the License at
614cf0368Sopenharmony_ci*
714cf0368Sopenharmony_ci*     http://www.apache.org/licenses/LICENSE-2.0
814cf0368Sopenharmony_ci*
914cf0368Sopenharmony_ci* Unless required by applicable law or agreed to in writing, software
1014cf0368Sopenharmony_ci* distributed under the License is distributed on an "AS IS" BASIS,
1114cf0368Sopenharmony_ci* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1214cf0368Sopenharmony_ci* See the License for the specific language governing permissions and
1314cf0368Sopenharmony_ci* limitations under the License.
1414cf0368Sopenharmony_ci*/
1514cf0368Sopenharmony_ci
1614cf0368Sopenharmony_ci#ifndef UDMF_ENDIAN_CONVERTER_H
1714cf0368Sopenharmony_ci#define UDMF_ENDIAN_CONVERTER_H
1814cf0368Sopenharmony_ci
1914cf0368Sopenharmony_ci#include <cstdint>
2014cf0368Sopenharmony_ci#include <endian.h>
2114cf0368Sopenharmony_ci
2214cf0368Sopenharmony_cinamespace OHOS {
2314cf0368Sopenharmony_cinamespace UDMF {
2414cf0368Sopenharmony_cistatic inline int8_t HostToNet(int8_t value)
2514cf0368Sopenharmony_ci{
2614cf0368Sopenharmony_ci    return value;
2714cf0368Sopenharmony_ci}
2814cf0368Sopenharmony_cistatic inline int16_t HostToNet(int16_t value)
2914cf0368Sopenharmony_ci{
3014cf0368Sopenharmony_ci    return htole16(value);
3114cf0368Sopenharmony_ci}
3214cf0368Sopenharmony_ci
3314cf0368Sopenharmony_cistatic inline int16_t NetToHost(int16_t value)
3414cf0368Sopenharmony_ci{
3514cf0368Sopenharmony_ci    return le16toh(value);
3614cf0368Sopenharmony_ci}
3714cf0368Sopenharmony_ci
3814cf0368Sopenharmony_cistatic inline int32_t HostToNet(int32_t value)
3914cf0368Sopenharmony_ci{
4014cf0368Sopenharmony_ci    return htole32(value);
4114cf0368Sopenharmony_ci}
4214cf0368Sopenharmony_ci
4314cf0368Sopenharmony_cistatic inline int8_t NetToHost(int8_t value)
4414cf0368Sopenharmony_ci{
4514cf0368Sopenharmony_ci    return le32toh(value);
4614cf0368Sopenharmony_ci}
4714cf0368Sopenharmony_ci
4814cf0368Sopenharmony_cistatic inline int32_t NetToHost(int32_t value)
4914cf0368Sopenharmony_ci{
5014cf0368Sopenharmony_ci    return le32toh(value);
5114cf0368Sopenharmony_ci}
5214cf0368Sopenharmony_ci
5314cf0368Sopenharmony_cistatic inline int64_t HostToNet(int64_t value)
5414cf0368Sopenharmony_ci{
5514cf0368Sopenharmony_ci    return htole64(value);
5614cf0368Sopenharmony_ci}
5714cf0368Sopenharmony_ci
5814cf0368Sopenharmony_cistatic inline int64_t NetToHost(int64_t value)
5914cf0368Sopenharmony_ci{
6014cf0368Sopenharmony_ci    return le64toh(value);
6114cf0368Sopenharmony_ci}
6214cf0368Sopenharmony_ci
6314cf0368Sopenharmony_cistatic inline uint8_t HostToNet(uint8_t value)
6414cf0368Sopenharmony_ci{
6514cf0368Sopenharmony_ci    return value;
6614cf0368Sopenharmony_ci}
6714cf0368Sopenharmony_cistatic inline uint16_t HostToNet(uint16_t value)
6814cf0368Sopenharmony_ci{
6914cf0368Sopenharmony_ci    return htole16(value);
7014cf0368Sopenharmony_ci}
7114cf0368Sopenharmony_ci
7214cf0368Sopenharmony_cistatic inline uint16_t NetToHost(uint16_t value)
7314cf0368Sopenharmony_ci{
7414cf0368Sopenharmony_ci    return le16toh(value);
7514cf0368Sopenharmony_ci}
7614cf0368Sopenharmony_ci
7714cf0368Sopenharmony_cistatic inline uint32_t HostToNet(uint32_t value)
7814cf0368Sopenharmony_ci{
7914cf0368Sopenharmony_ci    return htole32(value);
8014cf0368Sopenharmony_ci}
8114cf0368Sopenharmony_ci
8214cf0368Sopenharmony_cistatic inline uint8_t NetToHost(uint8_t value)
8314cf0368Sopenharmony_ci{
8414cf0368Sopenharmony_ci    return le32toh(value);
8514cf0368Sopenharmony_ci}
8614cf0368Sopenharmony_ci
8714cf0368Sopenharmony_cistatic inline uint32_t NetToHost(uint32_t value)
8814cf0368Sopenharmony_ci{
8914cf0368Sopenharmony_ci    return le32toh(value);
9014cf0368Sopenharmony_ci}
9114cf0368Sopenharmony_ci
9214cf0368Sopenharmony_cistatic inline uint64_t HostToNet(uint64_t value)
9314cf0368Sopenharmony_ci{
9414cf0368Sopenharmony_ci    return htole64(value);
9514cf0368Sopenharmony_ci}
9614cf0368Sopenharmony_ci
9714cf0368Sopenharmony_cistatic inline uint64_t NetToHost(uint64_t value)
9814cf0368Sopenharmony_ci{
9914cf0368Sopenharmony_ci    return le64toh(value);
10014cf0368Sopenharmony_ci}
10114cf0368Sopenharmony_ci
10214cf0368Sopenharmony_cifloat HostToNet(float value);
10314cf0368Sopenharmony_ci
10414cf0368Sopenharmony_cifloat NetToHost(float value);
10514cf0368Sopenharmony_ci
10614cf0368Sopenharmony_cidouble HostToNet(double value);
10714cf0368Sopenharmony_ci
10814cf0368Sopenharmony_cidouble NetToHost(double value);
10914cf0368Sopenharmony_ci} // namespace UDMF
11014cf0368Sopenharmony_ci} // namespace OHOS
11114cf0368Sopenharmony_ci#endif // UDMF_ENDIAN_CONVERTER_H
112