72 #ifndef CAEN_INCLUDE_CAENUTILITY_H_ 73 #define CAEN_INCLUDE_CAENUTILITY_H_ 97 #define CAEN_UTILITY_API __cdecl 98 #ifdef _CAEN_UTILITY_EXPORT 99 #define CAEN_UTILITY_DLLAPI __declspec(dllexport) 101 #define CAEN_UTILITY_DLLAPI __declspec(dllimport) 104 #define CAEN_UTILITY_API 105 #define CAEN_UTILITY_DLLAPI __attribute__((visibility("default"))) 112 #define _c_macro_str_helper(x) #x 113 #define c_macro_str(x) _c_macro_str_helper(x) 116 #define c_unused_parameter(P) ((void)(P)) 125 #if defined(__GNUC__) && !defined(__clang__) 126 #define c_gcc_version (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) 127 #define c_compiler_version "GCC v" c_macro_str(__GNUC__) "." c_macro_str(__GNUC_MINOR__) "." c_macro_str(__GNUC_PATCHLEVEL__) 129 #define c_gcc_version (-1) 134 #define c_clang_version (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) 135 #define c_compiler_version "Clang v" __clang_version__ 137 #define c_clang_version (-1) 141 #if defined(_MSC_VER) && !defined(__clang__) 142 #define c_msc_version (_MSC_VER) 143 #define c_compiler_version "Visual C++ v" c_macro_str(_MSC_FULL_VER) 145 #define c_msc_version (-1) 148 #ifndef c_compiler_version 149 #define c_compiler_version "Unknown" 155 #define __attribute__(A) 157 #define __declspec(A) 162 #define c_nop NOP_FUNCTION 164 #define c_nop ((void)0) 173 #define c_attribute_format(_FMT_,_ARGS_) __attribute__((__format__(__printf__, _FMT_, _ARGS_))) 180 #if c_gcc_version >= 40300 || c_clang_version >= 40000 181 #define c_attribute_alloc_size(...) __attribute__((__alloc_size__(__VA_ARGS__))) 183 #define c_attribute_alloc_size(...) __attribute__(()) 191 #define c_declspec_allocator __declspec(allocator) 199 #define c_attribute_malloc __attribute__((__malloc__)) 205 #define c_attribute_pure __attribute__((__pure__)) 213 #define c_attribute_nonnull(...) __attribute__((__nonnull__(__VA_ARGS__))) 219 #if c_gcc_version >= 70000 220 #define c_attribute_fallthrough __attribute__((__fallthrough__)) 222 #define c_attribute_fallthrough c_nop 227 #if c_gcc_version >= 0 || c_clang_version >= 0 228 #define c_force_inline __attribute__((__always_inline__)) inline 229 #elif c_msc_version >= 0 230 #define c_force_inline __forceinline 232 #define c_force_inline inline 240 #if c_gcc_version >= 30400 || c_clang_version >= 40000 241 #define c_nodiscard __attribute__((__warn_unused_result__)) 242 #elif c_msc_version >= 1700 243 #define c_nodiscard _Check_return_ 253 #if c_gcc_version >= 20500 || c_clang_version >= 0 254 #define c_noreturn __attribute__((__noreturn__)) 255 #elif c_msc_version >= 1700 256 #define c_noreturn __declspec(noreturn) 264 #if c_msc_version >= 0 265 #define c_acquires_lock_on_success(m) _When_(return == CAENThread_RetCode_Success, _Acquires_lock_(m)) 266 #define c_releases_lock_on_success(m) _When_(return == CAENThread_RetCode_Success, _Releases_lock_(m)) 268 #define c_acquires_lock_on_success(m) 269 #define c_releases_lock_on_success(m) 275 #if c_msc_version >= 0 276 #define c_use_decl_annotations _Use_decl_annotations_ 278 #define c_use_decl_annotations 288 #if c_gcc_version >= 0 || c_clang_version >= 0 289 #define c_likely(x) __builtin_expect((x),1) 290 #define c_unlikely(x) __builtin_expect((x),0) 292 #define c_likely(x) (x) 293 #define c_unlikely(x) (x) 342 #endif // CAEN_INCLUDE_CAENUTILITY_H_
size_t c_srtrim(char *str, const char *remove)
#define CAEN_UTILITY_DLLAPI
size_t c_strim(char *str, const char *remove)
void(* c_funcptr_t)(void)
Generic function pointer.
c_Utility_ErrorCode_t
Library return codes.
size_t c_sltrim(char *str, const char *remove)