117fd14ceSopenharmony_ci/* 217fd14ceSopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd. 317fd14ceSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 417fd14ceSopenharmony_ci * you may not use this file except in compliance with the License. 517fd14ceSopenharmony_ci * You may obtain a copy of the License at 617fd14ceSopenharmony_ci * 717fd14ceSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 817fd14ceSopenharmony_ci * 917fd14ceSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1017fd14ceSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1117fd14ceSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1217fd14ceSopenharmony_ci * See the License for the specific language governing permissions and 1317fd14ceSopenharmony_ci * limitations under the License. 1417fd14ceSopenharmony_ci */ 1517fd14ceSopenharmony_ci 1617fd14ceSopenharmony_ci#ifndef HC_PARCEL_H 1717fd14ceSopenharmony_ci#define HC_PARCEL_H 1817fd14ceSopenharmony_ci 1917fd14ceSopenharmony_ci#include <stdint.h> 2017fd14ceSopenharmony_ci#include "hc_types.h" 2117fd14ceSopenharmony_ci 2217fd14ceSopenharmony_ci#ifdef __cplusplus 2317fd14ceSopenharmony_ciextern "C" { 2417fd14ceSopenharmony_ci#endif 2517fd14ceSopenharmony_ci 2617fd14ceSopenharmony_ci#define PARCEL_DEFAULT_LENGTH 0 2717fd14ceSopenharmony_ci#define PARCEL_DEFAULT_ALLOC_UNIT 0 2817fd14ceSopenharmony_ci 2917fd14ceSopenharmony_citypedef struct { 3017fd14ceSopenharmony_ci char *data; 3117fd14ceSopenharmony_ci unsigned int beginPos; 3217fd14ceSopenharmony_ci unsigned int endPos; 3317fd14ceSopenharmony_ci unsigned int length; 3417fd14ceSopenharmony_ci unsigned int allocUnit; 3517fd14ceSopenharmony_ci} HcParcel; 3617fd14ceSopenharmony_ci 3717fd14ceSopenharmony_ciHcParcel CreateParcel(uint32_t size, uint32_t allocUnit); 3817fd14ceSopenharmony_civoid DeleteParcel(HcParcel *parcel); 3917fd14ceSopenharmony_civoid ClearParcel(HcParcel *parcel); 4017fd14ceSopenharmony_civoid ResetParcel(HcParcel *parcel, uint32_t size, uint32_t allocUnit); 4117fd14ceSopenharmony_ciHcBool ParcelReadWithoutPopData(HcParcel *parcel, void *dst, uint32_t dataSize); 4217fd14ceSopenharmony_ciHcBool ParcelRead(HcParcel *parcel, void *dst, uint32_t dataSize); 4317fd14ceSopenharmony_ciHcBool ParcelWrite(HcParcel *parcel, const void *src, uint32_t dataSize); 4417fd14ceSopenharmony_ciHcBool ParcelReadRevert(HcParcel *parcel, void *dst, uint32_t dataSize); 4517fd14ceSopenharmony_ciHcBool ParcelWriteRevert(HcParcel *parcel, const void *src, uint32_t dataSize); 4617fd14ceSopenharmony_ciuint32_t GetParcelDataSize(const HcParcel *parcel); 4717fd14ceSopenharmony_ciconst char *GetParcelData(const HcParcel *parcel); 4817fd14ceSopenharmony_ciconst char* GetParcelLastChar(const HcParcel *parcel); 4917fd14ceSopenharmony_ci 5017fd14ceSopenharmony_ciHcBool ParcelReadInt32(HcParcel *parcel, int *dst); 5117fd14ceSopenharmony_ciHcBool ParcelReadUint32(HcParcel *parcel, uint32_t *dst); 5217fd14ceSopenharmony_ciHcBool ParcelReadInt16(HcParcel *parcel, short *dst); 5317fd14ceSopenharmony_ciHcBool ParcelReadUint16(HcParcel *parcel, uint16_t *dst); 5417fd14ceSopenharmony_ciHcBool ParcelReadInt8(HcParcel *parcel, char *dst); 5517fd14ceSopenharmony_ciHcBool ParcelReadUint8(HcParcel *parcel, uint8_t *dst); 5617fd14ceSopenharmony_ciHcBool ParcelReadUint64(HcParcel *parcel, uint64_t *dst); 5717fd14ceSopenharmony_ciHcBool ParcelReadInt64(HcParcel *parcel, int64_t *dst); 5817fd14ceSopenharmony_ciHcBool ParcelWriteInt32(HcParcel *parcel, int src); 5917fd14ceSopenharmony_ciHcBool ParcelWriteUint32(HcParcel *parcel, uint32_t src); 6017fd14ceSopenharmony_ciHcBool ParcelWriteInt16(HcParcel *parcel, short src); 6117fd14ceSopenharmony_ciHcBool ParcelWriteUint16(HcParcel *parcel, uint16_t src); 6217fd14ceSopenharmony_ciHcBool ParcelWriteInt8(HcParcel *parcel, char src); 6317fd14ceSopenharmony_ciHcBool ParcelWriteUint8(HcParcel *parcel, uint8_t src); 6417fd14ceSopenharmony_ciHcBool ParcelWriteUint64(HcParcel *parcel, uint64_t src); 6517fd14ceSopenharmony_ciHcBool ParcelWriteInt64(HcParcel *parcel, int64_t src); 6617fd14ceSopenharmony_ciHcBool ParcelWriteString(HcParcel *parcel, const char *str); 6717fd14ceSopenharmony_ciHcBool ParcelReadString(HcParcel *parcel, char **str); 6817fd14ceSopenharmony_ciHcBool ParcelReadParcel(HcParcel *src, HcParcel *dst, uint32_t size, HcBool copy); 6917fd14ceSopenharmony_ciHcBool ParcelCopy(HcParcel *src, HcParcel *dst); 7017fd14ceSopenharmony_ci 7117fd14ceSopenharmony_ciHcBool ParcelReadInt32Revert(HcParcel *parcel, int32_t *dst); 7217fd14ceSopenharmony_ciHcBool ParcelReadUint32Revert(HcParcel *parcel, uint32_t *dst); 7317fd14ceSopenharmony_ciHcBool ParcelReadInt16Revert(HcParcel *parcel, short *dst); 7417fd14ceSopenharmony_ciHcBool ParcelReadUint16Revert(HcParcel *parcel, uint16_t *dst); 7517fd14ceSopenharmony_ciHcBool ParcelReadInt8Revert(HcParcel *parcel, char *dst); 7617fd14ceSopenharmony_ciHcBool ParcelReadUint8Revert(HcParcel *parcel, uint8_t *dst); 7717fd14ceSopenharmony_ciHcBool ParcelReadUint64Revert(HcParcel *parcel, uint64_t *dst); 7817fd14ceSopenharmony_ciHcBool ParcelReadInt64Revert(HcParcel *parcel, int64_t *dst); 7917fd14ceSopenharmony_ciHcBool ParcelWriteInt32Revert(HcParcel *parcel, int src); 8017fd14ceSopenharmony_ciHcBool ParcelWriteUint32Revert(HcParcel *parcel, uint32_t src); 8117fd14ceSopenharmony_ciHcBool ParcelWriteInt16Revert(HcParcel *parcel, short src); 8217fd14ceSopenharmony_ciHcBool ParcelWriteUint16Revert(HcParcel *parcel, uint16_t src); 8317fd14ceSopenharmony_ciHcBool ParcelWriteInt8Revert(HcParcel *parcel, char src); 8417fd14ceSopenharmony_ciHcBool ParcelWriteUint8Revert(HcParcel *parcel, uint8_t src); 8517fd14ceSopenharmony_ciHcBool ParcelWriteUint64Revert(HcParcel *parcel, uint64_t src); 8617fd14ceSopenharmony_ciHcBool ParcelWriteInt64Revert(HcParcel *parcel, int64_t src); 8717fd14ceSopenharmony_ci 8817fd14ceSopenharmony_civoid DataRevert(void *data, uint32_t length); 8917fd14ceSopenharmony_ciHcBool ParcelPopBack(HcParcel *parcel, uint32_t size); 9017fd14ceSopenharmony_ciHcBool ParcelPopFront(HcParcel *parcel, uint32_t size); 9117fd14ceSopenharmony_ciHcBool ParcelEraseBlock(HcParcel *parcel, uint32_t start, uint32_t dataSize, void *dst); 9217fd14ceSopenharmony_ci 9317fd14ceSopenharmony_ci#ifdef __cplusplus 9417fd14ceSopenharmony_ci} 9517fd14ceSopenharmony_ci#endif 9617fd14ceSopenharmony_ci#endif 97