61 lines
3.0 KiB
C
61 lines
3.0 KiB
C
/* SPDX-FileCopyrightText: 2013 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
#ifndef LIBMV_C_API_UTILDEFINES_H_
|
|
#define LIBMV_C_API_UTILDEFINES_H_
|
|
|
|
#if defined(_MSC_VER) && _MSC_VER < 1900
|
|
# define __func__ __FUNCTION__
|
|
# define snprintf _snprintf
|
|
#endif
|
|
|
|
#ifdef WITH_LIBMV_GUARDED_ALLOC
|
|
# include "MEM_guardedalloc.h"
|
|
# if defined __GNUC__
|
|
# define LIBMV_OBJECT_NEW(type, args...) \
|
|
new (MEM_new_uninitialized(sizeof(type), __func__)) type(args)
|
|
# else
|
|
# define LIBMV_OBJECT_NEW(type, ...) \
|
|
new (MEM_new_uninitialized(sizeof(type), __FUNCTION__)) type(__VA_ARGS__)
|
|
# endif
|
|
# define LIBMV_OBJECT_DELETE(what, type) \
|
|
{ \
|
|
if (what) { \
|
|
((type*)what)->~type(); \
|
|
MEM_delete_void(const_cast<void*>(static_cast<const void*>(what))); \
|
|
} \
|
|
} \
|
|
(void)0
|
|
# define LIBMV_STRUCT_NEW(type, count) \
|
|
(type*)MEM_new_uninitialized(sizeof(type) * count, __func__)
|
|
# define LIBMV_STRUCT_DELETE(what) \
|
|
MEM_delete_void(const_cast<void*>(static_cast<const void*>(what)))
|
|
#else
|
|
// Need this to keep libmv-capi potentially standalone.
|
|
# if defined __GNUC__ || defined __sun
|
|
# define LIBMV_OBJECT_NEW(type, args...) \
|
|
new (malloc(sizeof(type))) type(args)
|
|
# else
|
|
# define LIBMV_OBJECT_NEW(type, ...) \
|
|
new (malloc(sizeof(type))) type(__VA_ARGS__)
|
|
# endif
|
|
# define LIBMV_OBJECT_DELETE(what, type) \
|
|
{ \
|
|
if (what) { \
|
|
((type*)(what))->~type(); \
|
|
free(what); \
|
|
} \
|
|
} \
|
|
(void)0
|
|
# define LIBMV_STRUCT_NEW(type, count) (type*)malloc(sizeof(type) * count)
|
|
# define LIBMV_STRUCT_DELETE(what) \
|
|
{ \
|
|
if (what) \
|
|
free(what); \
|
|
} \
|
|
(void)0
|
|
#endif
|
|
|
|
#endif // LIBMV_C_API_UTILDEFINES_H_
|