151 lines
3.7 KiB
C
151 lines
3.7 KiB
C
/*
|
|
* Tencent is pleased to support the open source community by making IoT Hub available.
|
|
* Copyright (C) 2016 THL A29 Limited, a Tencent company. All rights reserved.
|
|
|
|
* Licensed under the MIT License (the "License"); you may not use this file except in
|
|
* compliance with the License. You may obtain a copy of the License at
|
|
* http://opensource.org/licenses/MIT
|
|
|
|
* Unless required by applicable law or agreed to in writing, software distributed under the License is
|
|
* distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
|
* either express or implied. See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
*/
|
|
|
|
#ifndef _QCLOUD_LIB_H_
|
|
#define _QCLOUD_LIB_H_
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define __QCLOUD_API__
|
|
|
|
#define __QCLOUD_INTERNAL__
|
|
|
|
#define __QCLOUD_STATIC__ static
|
|
|
|
#define __QCLOUD_OSAL__
|
|
|
|
#define QCLOUD_MAX(a,b) ((a) > (b) ? (a) : (b))
|
|
#define QCLOUD_MIN(a,b) ((a) < (b) ? (a) : (b))
|
|
|
|
#if (QCLOUD_CFG_DEVELOP_DEBUG_EN > 0u)
|
|
|
|
#define QCLOUD_FUNC_ENTRY \
|
|
{ \
|
|
printf("FUNC_ENTRY: %s L#%d \n", __FUNCTION__, __LINE__); \
|
|
}
|
|
|
|
#define QCLOUD_FUNC_EXIT \
|
|
{ \
|
|
printf("FUNC_EXIT: %s L#%d \n", __FUNCTION__, __LINE__); \
|
|
return; \
|
|
}
|
|
|
|
#define QCLOUD_FUNC_EXIT_RC(x) \
|
|
{ \
|
|
printf("FUNC_EXIT: %s L#%d Return Code : %ld \n", __FUNCTION__, __LINE__, (long)(x)); \
|
|
return x; \
|
|
}
|
|
|
|
#define QCLOUD_FUNC_EXIT_RC_IF(exp, expected, x) \
|
|
if ((exp) == (expected)) { \
|
|
printf("FUNC_EXIT: %s L#%d Return Code : %ld \n", __FUNCTION__, __LINE__, (long)(x)); \
|
|
return (x); \
|
|
}
|
|
|
|
#define QCLOUD_FUNC_EXIT_RC_IF_NOT(exp, expected, x) \
|
|
if ((exp) != (expected)) { \
|
|
printf("FUNC_EXIT: %s L#%d Return Code : %ld \n", __FUNCTION__, __LINE__, (long)(x)); \
|
|
return (x); \
|
|
}
|
|
#else
|
|
|
|
#define QCLOUD_FUNC_ENTRY
|
|
|
|
#define QCLOUD_FUNC_EXIT \
|
|
{ \
|
|
return;\
|
|
}
|
|
|
|
#define QCLOUD_FUNC_EXIT_RC(x) \
|
|
{ \
|
|
return x; \
|
|
}
|
|
|
|
#define QCLOUD_FUNC_EXIT_RC_IF(exp, expected, x) \
|
|
if ((exp) == (expected)) { \
|
|
return (x); \
|
|
}
|
|
|
|
#define QCLOUD_FUNC_EXIT_RC_IF_NOT(exp, expected, x) \
|
|
if ((exp) != (expected)) { \
|
|
return (x); \
|
|
}
|
|
#endif
|
|
|
|
#define QCLOUD_NUMBERIC_SANITY_CHECK(num, err) \
|
|
do { \
|
|
if (0 == (num)) { \
|
|
QCLOUD_LOG_E("Invalid argument, numeric 0"); \
|
|
return (err); \
|
|
} \
|
|
} while(0)
|
|
|
|
#define QCLOUD_NUMBERIC_SANITY_CHECK_RTN(num) \
|
|
do { \
|
|
if (0 == (num)) { \
|
|
QCLOUD_LOG_E("Invalid argument, numeric 0"); \
|
|
return; \
|
|
} \
|
|
} while(0)
|
|
|
|
#define QCLOUD_POINTER_SANITY_CHECK(ptr, err) \
|
|
do { \
|
|
if (NULL == (ptr)) { \
|
|
QCLOUD_LOG_E("Invalid argument, %s = %p", #ptr, ptr); \
|
|
return (err); \
|
|
} \
|
|
} while(0)
|
|
|
|
#define QCLOUD_POINTER_SANITY_CHECK_RTN(ptr) \
|
|
do { \
|
|
if (NULL == (ptr)) { \
|
|
QCLOUD_LOG_E("Invalid argument, %s = %p", #ptr, ptr); \
|
|
return; \
|
|
} \
|
|
} while(0)
|
|
|
|
#define QCLOUD_STRING_PTR_SANITY_CHECK(ptr, err) \
|
|
do { \
|
|
if (NULL == (ptr)) { \
|
|
QCLOUD_LOG_E("Invalid argument, %s = %p", #ptr, (ptr)); \
|
|
return (err); \
|
|
} \
|
|
if (0 == strlen((ptr))) { \
|
|
QCLOUD_LOG_E("Invalid argument, %s = '%s'", #ptr, (ptr)); \
|
|
return (err); \
|
|
} \
|
|
} while(0)
|
|
|
|
#define QCLOUD_STRING_PTR_SANITY_CHECK_RTN(ptr) \
|
|
do { \
|
|
if (NULL == (ptr)) { \
|
|
QCLOUD_LOG_E("Invalid argument, %s = %p", #ptr, (ptr)); \
|
|
return; \
|
|
} \
|
|
if (0 == strlen((ptr))) { \
|
|
QCLOUD_LOG_E("Invalid argument, %s = '%s'", #ptr, (ptr)); \
|
|
return; \
|
|
} \
|
|
} while(0)
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|