68 lines
1.4 KiB
C
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
|