/**
* @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 修改日志:
*
* | Date | Version | Author | Description
* |
|---|
* *******************************************************************************************
*/
#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