
//===----------------------------------------------------------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.txt for details.
//
//===----------------------------------------------------------------------===//


#ifndef KMP_SAFE_C_API_H
#define KMP_SAFE_C_API_H

//
// Replacement for banned C API
//

// Not every unsafe call listed here is handled now, but keeping everything
// in one place should be handy for future maintenance.
#if KMP_OS_WINDOWS

# define RSIZE_MAX_STR ( 4UL << 10 ) // 4KB

// _malloca was suggested, but it is not a drop-in replacement for _alloca
# define KMP_ALLOCA                  _alloca

# define KMP_MEMCPY_S                memcpy_s
# define KMP_SNPRINTF                sprintf_s
# define KMP_SSCANF                  sscanf_s
# define KMP_STRCPY_S                strcpy_s
# define KMP_STRNCPY_S               strncpy_s

// Use this only when buffer size is unknown
# define KMP_MEMCPY(dst, src, cnt)   memcpy_s(dst, cnt, src, cnt)

# define KMP_STRLEN(str)             strnlen_s(str, RSIZE_MAX_STR)

// Use this only when buffer size is unknown
# define KMP_STRNCPY(dst, src, cnt)  strncpy_s(dst, cnt, src, cnt)

// _TRUNCATE insures buffer size > max string to print.
# define KMP_VSNPRINTF(dst, cnt, fmt, arg)  vsnprintf_s(dst, cnt, _TRUNCATE, fmt, arg)

#else // KMP_OS_WINDOWS

// For now, these macros use the existing API.

# define KMP_ALLOCA                         alloca
# define KMP_MEMCPY_S(dst, bsz, src, cnt)   memcpy(dst, src, cnt)
# define KMP_SNPRINTF                       snprintf
# define KMP_SSCANF                         sscanf
# define KMP_STRCPY_S(dst, bsz, src)        strcpy(dst, src)
# define KMP_STRNCPY_S(dst, bsz, src, cnt)  strncpy(dst, src, cnt)
# define KMP_VSNPRINTF                      vsnprintf
# define KMP_STRNCPY                        strncpy
# define KMP_STRLEN                         strlen
# define KMP_MEMCPY                         memcpy

#endif // KMP_OS_WINDOWS

#endif // KMP_SAFE_C_API_H
