FBX C++ API Reference
fbxstdcompliant.h
Go to the documentation of this file.
1 /****************************************************************************************
2 
3  Copyright (C) 2015 Autodesk, Inc.
4  All rights reserved.
5 
6  Use of this software is subject to the terms of the Autodesk license agreement
7  provided at the time of installation or download, or which otherwise accompanies
8  this software in either electronic or hard copy form.
9 
10 ****************************************************************************************/
11 
14 #ifndef _FBXSDK_CORE_ARCH_STDCOMPLIANT_H_
15 #define _FBXSDK_CORE_ARCH_STDCOMPLIANT_H_
16 
17 #include <fbxsdk/fbxsdk_def.h>
18 
19 #include <fbxsdk/fbxsdk_nsbegin.h>
20 
21 #if defined(FBXSDK_ENV_WIN)
22  #define FBXSDK_printf printf_s
23  #define FBXSDK_fprintf fprintf_s
24  inline int FBXSDK_sprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsprintf_s(dst, dstsize, format, vl); va_end(vl); return ret; }
25  inline int FBXSDK_snprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsnprintf_s(dst, dstsize, _TRUNCATE, format, vl); va_end(vl); return ret; }
26  inline int FBXSDK_vsprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsprintf_s(dst, dstsize, format, vl); }
27  inline int FBXSDK_vsnprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsnprintf_s(dst, dstsize, _TRUNCATE, format, vl); }
28  #define FBXSDK_stricmp(dst, src) _stricmp(dst, src)
29  #define FBXSDK_strnicmp(dst, src, count) _strnicmp(dst, src, count)
30  #define FBXSDK_strcpy(dst, size, src) strcpy_s(dst, size, src)
31  #define FBXSDK_strncpy(dst, size, src, count) strncpy_s(dst, size, src, count)
32  #define FBXSDK_strcat(dst, size, src) strcat_s(dst, size, src)
33  #define FBXSDK_strtok(str, delim, ctx) strtok_s(str, delim, ctx)
34  #define FBXSDK_wcscpy(dst, size, src) wcscpy_s(dst, size, src)
35  #define FBXSDK_wcscat(dst, size, src) wcscat_s(dst, size, src)
36 #if !defined(FBXSDK_ENV_WINSTORE)
37  #define FBXSDK_getpid _getpid
38  #define FBXSDK_getcwd _getcwd
39 #else
40  inline int FBXSDK_getpid(){ return 0; }
41  inline char* FBXSDK_getcwd(char*,int){ return NULL; }
42 #endif
43  #define FBXSDK_localtime(ptm, time) { struct tm tms; ptm = &tms; localtime_s(ptm, time); }
44  #define FBXSDK_gmtime(ptm, time) { struct tm tms; ptm = &tms; gmtime_s(ptm, time); }
45  #define FBXSDK_fopen(fp, name, mode) fopen_s(&fp, name, mode)
46 
47 #elif defined(FBXSDK_ENV_MAC) || defined(FBXSDK_ENV_LINUX)
48  #define FBXSDK_printf printf
49  #define FBXSDK_fprintf fprintf
50  inline int FBXSDK_sprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsprintf(dst, format, vl); va_end(vl); return ret; }
51  inline int FBXSDK_snprintf(char* dst, size_t dstsize, const char* format, ...){ va_list vl; va_start(vl, format); int ret = vsnprintf(dst, dstsize, format, vl); va_end(vl); return ret; }
52  inline int FBXSDK_vsprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsprintf(dst, format, vl); }
53  inline int FBXSDK_vsnprintf(char* dst, size_t dstsize, const char* format, va_list vl){ return vsnprintf(dst, dstsize, format, vl); }
54  #define FBXSDK_stricmp(dst, src) stricmp(dst, src)
55  #define FBXSDK_strnicmp(dst, src, count) strnicmp(dst, src, count)
56  #define FBXSDK_strcpy(dst, size, src) strcpy(dst, src)
57  #define FBXSDK_strncpy(dst, size, src, count) strncpy(dst, src, count)
58  #define FBXSDK_strcat(dst, size, src) strcat(dst, src)
59  #define FBXSDK_strtok(str, delim, ctx) strtok(str, delim)
60  #define FBXSDK_wcscpy(dst, size, src) wcscpy(dst, src)
61  #define FBXSDK_wcscat(dst, size, src) wcscat_s(dst, src)
62  #define FBXSDK_getpid getpid
63  #define FBXSDK_getcwd getcwd
64  #define FBXSDK_localtime(tm, time) tm=localtime(time)
65  #define FBXSDK_gmtime(tm, time) tm=gmtime(time)
66  #define FBXSDK_fopen(fp, name, mode) fp=fopen(name, mode)
67 
68 #else
69  #error Unsupported platform!
70 #endif
71 
72 #define FBXSDK_strdup FbxStrDup
73 
74 //The scanf family functions cannot easily be used in both secure and non-secure versions because
75 //Microsoft's secure version expects the size of the string/char* arguments following their address.
76 //On Unix machines the scanf family functions do not have this behavior and trying to use the same
77 //calls would result in compiler errors because the arguments would not match the format string.
78 //Using the following macros in the code will simply desable the warning at compile time.
79 #if defined(FBXSDK_COMPILER_MSC) && (_MSC_VER >= 1300)
80  #define FBXSDK_CRT_SECURE_NO_WARNING_BEGIN\
81  {\
82  __pragma(warning(push))\
83  __pragma(warning(disable : 4996))\
84  }
85 
86  #define FBXSDK_CRT_SECURE_NO_WARNING_END\
87  {\
88  __pragma(warning(pop))\
89  }
90 #else
91  #define FBXSDK_CRT_SECURE_NO_WARNING_BEGIN
92  #define FBXSDK_CRT_SECURE_NO_WARNING_END
93 #endif
94 
95 #include <fbxsdk/fbxsdk_nsend.h>
96 
97 #endif /* _FBXSDK_CORE_ARCH_STDCOMPLIANT_H_ */
FBX SDK environment definition.
#define NULL
Definition: fbxarch.h:210