1/* 2 * Copyright (C) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#ifndef IAM_C_ARRAY_H 17#define IAM_C_ARRAY_H 18 19#include <stdint.h> 20#include <string.h> 21 22#include "defines.h" 23 24#ifdef __cplusplus 25extern "C" { 26#endif 27 28#define IS_ARRAY_NULL(array) ((array).data == NULL || (array).len == 0) 29#define IS_ARRAY_VALID(array) ((array).data != NULL || ((array).data == NULL && (array).len == 0)) 30 31typedef struct Uint8Array { 32 uint8_t *data; 33 uint32_t len; 34} Uint8Array; 35 36typedef struct Uint64Array { 37 uint64_t *data; 38 uint32_t len; 39} Uint64Array; 40 41inline bool Uint8ArrayIsSame(const Uint8Array array1, const Uint8Array array2) 42{ 43 if (array1.len != array2.len) { 44 return false; 45 } 46 if (array1.data == NULL || array2.data == NULL) { 47 return false; 48 } 49 return memcmp(array1.data, array2.data, array1.len) == 0; 50} 51 52void DestroyUint8Array(Uint8Array **array); 53void DestroyUint64Array(Uint64Array **array); 54Uint8Array *CreateUint8ArrayBySize(uint32_t size); 55Uint8Array *CreateUint8ArrayByData(const uint8_t *data, uint32_t len); 56Uint64Array *CreateUint64ArrayByData(const uint64_t *data, uint32_t len); 57 58#ifdef __cplusplus 59} 60#endif 61 62#endif // IAM_C_ARRAY_H