mcu_hi3321_watch/middleware/utils/algorithm/cstl/cstl_public.c
2025-05-26 20:15:20 +08:00

68 lines
1.4 KiB
C

/**
* @file cstl_public.c
* @copyright Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved.
* @brief cstl_public 公共定义实现源码
* @details cstl模块公共定义源码
* @date 2021-05-14
* @version v0.1.0
* *******************************************************************************************
* @par 修改日志:
* <table>
* <tr><th>Date <th>Version <th>Author <th>Description
* </table>
* *******************************************************************************************
*/
#include "cstl_public_inner.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @ingroup cstl
*/
__attribute__((visibility("default"))) bool IsMultiOverflow(size_t x, size_t y)
{
bool ret = false;
if ((x > 0) && (y > 0)) {
ret = ((SIZE_MAX / x) < y) ? true : false;
}
return ret;
}
/* 加法溢出判断 */
/**
* @ingroup cstl
*/
__attribute__((visibility("default"))) bool IsAddOverflow(size_t x, size_t y)
{
return ((x + y) < x);
}
/**
* @ingroup cstl
*/
__attribute__((visibility("default"))) int32_t CstlIntCmpFunc(uintptr_t data1, uintptr_t data2)
{
int32_t ret;
intptr_t key1Value = (intptr_t)data1;
intptr_t key2Value = (intptr_t)data2;
if (key1Value > key2Value) {
ret = 1;
} else if (key1Value < key2Value) {
ret = -1;
} else {
ret = 0;
}
return ret;
}
#ifdef __cplusplus
}
#endif