22#include "dtool_config.h"
25#if defined(_WIN32) || defined(_WIN64)
42#pragma warning (disable : 4231)
44#pragma warning (disable : 4786)
46#pragma warning (disable : 4251)
48#pragma warning (disable : 4503)
50#pragma warning (disable : 4305)
52#pragma warning (disable : 4250)
54#pragma warning (disable : 4355)
56#pragma warning (disable : 4244)
58#pragma warning (disable : 4267)
60#pragma warning (disable : 4577)
72#define __has_builtin(x) 0
75#ifndef __has_attribute
76#define __has_attribute(x) 0
83#define NODEFAULT default: assert(0); break;
84#elif __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) || __has_builtin(__builtin_unreachable)
85#define NODEFAULT default: __builtin_unreachable();
86#elif defined(_MSC_VER)
87#define NODEFAULT default: __assume(0);
93#if __has_builtin(__builtin_assume_aligned) || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)
94#define ASSUME_ALIGNED(x, y) (__builtin_assume_aligned(x, y))
96#define ASSUME_ALIGNED(x, y) (x)
99#if __has_attribute(assume_aligned) || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 9)
100#define RETURNS_ALIGNED(x) __attribute__((assume_aligned(x)))
102#define RETURNS_ALIGNED(x)
106#define LIKELY(x) __builtin_expect(!!(x), 1)
107#define UNLIKELY(x) __builtin_expect(!!(x), 0)
110#define UNLIKELY(x) (x)
121#define _WIN32_WINNT 0x0502
124#ifndef __STDC_LIMIT_MACROS
125#define __STDC_LIMIT_MACROS
127#ifndef __STDC_CONSTANT_MACROS
128#define __STDC_CONSTANT_MACROS
134#if defined(__clang__) && defined(__GLIBC__)
135#include <sys/cdefs.h>
136#ifndef __extern_always_inline
137#define __extern_always_inline extern __always_inline
144typedef struct _object PyObject;
159#define _FILE_OFFSET_BITS 64
160#define _LARGEFILE_SOURCE 1
167#ifdef PHAVE_SYS_TYPES_H
168#include <sys/types.h>
175#ifdef PHAVE_SYS_MALLOC_H
176#include <sys/malloc.h>
207#ifdef PHAVE_SYS_TIME_H
216#include <stdtypedefs.h>
226#include <Profile/Profiler.h>
231#define TAU_TYPE_STRING(profileString, str)
232#define TAU_PROFILE(name, type, group)
233#define TAU_PROFILE_TIMER(var, name, type, group)
234#define TAU_PROFILE_START(var)
235#define TAU_PROFILE_STOP(var)
236#define TAU_PROFILE_STMT(stmt)
237#define TAU_PROFILE_EXIT(msg)
238#define TAU_PROFILE_INIT(argc, argv)
239#define TAU_PROFILE_SET_NODE(node)
240#define TAU_PROFILE_SET_CONTEXT(context)
241#define TAU_PROFILE_SET_GROUP_NAME(newname)
242#define TAU_PROFILE_TIMER_SET_GROUP_NAME(t, newname)
243#define TAU_PROFILE_CALLSTACK()
245#define TAU_DB_PURGE()
247#define TAU_REGISTER_CONTEXT_EVENT(event, name)
248#define TAU_CONTEXT_EVENT(event, data)
249#define TAU_DISABLE_CONTEXT_EVENT(event)
250#define TAU_ENABLE_CONTEXT_EVENT(event)
252#define TAU_REGISTER_EVENT(event, name)
253#define TAU_EVENT(event, data)
254#define TAU_EVENT_DISABLE_MIN(event)
255#define TAU_EVENT_DISABLE_MAX(event)
256#define TAU_EVENT_DISABLE_MEAN(event)
257#define TAU_EVENT_DISABLE_STDDEV(event)
258#define TAU_REPORT_STATISTICS()
259#define TAU_REPORT_THREAD_STATISTICS()
260#define TAU_REGISTER_THREAD()
261#define TAU_REGISTER_FORK(id, op)
262#define TAU_ENABLE_INSTRUMENTATION()
263#define TAU_DISABLE_INSTRUMENTATION()
264#define TAU_ENABLE_GROUP(group)
265#define TAU_DISABLE_GROUP(group)
266#define TAU_ENABLE_GROUP_NAME(group)
267#define TAU_DISABLE_GROUP_NAME(group)
268#define TAU_ENABLE_ALL_GROUPS()
269#define TAU_DISABLE_ALL_GROUPS()
270#define TAU_TRACK_MEMORY()
271#define TAU_TRACK_MEMORY_HERE()
272#define TAU_ENABLE_TRACKING_MEMORY()
273#define TAU_DISABLE_TRACKING_MEMORY()
274#define TAU_ENABLE_TRACKING_MUSE_EVENTS()
275#define TAU_DISABLE_TRACKING_MUSE_EVENTS()
276#define TAU_TRACK_MUSE_EVENTS()
277#define TAU_SET_INTERRUPT_INTERVAL(value)
279#define TAU_TRACE_SENDMSG(type, destination, length)
280#define TAU_TRACE_RECVMSG(type, source, length)
282#define TAU_MAPPING(stmt, group) stmt
283#define TAU_MAPPING_OBJECT(FuncInfoVar)
284#define TAU_MAPPING_LINK(FuncInfoVar, Group)
285#define TAU_MAPPING_PROFILE(FuncInfoVar)
286#define TAU_MAPPING_CREATE(name, type, key, groupname, tid)
287#define TAU_MAPPING_PROFILE_TIMER(Timer, FuncInfoVar, tid)
288#define TAU_MAPPING_TIMER_CREATE(t, name, type, gr, group_name)
289#define TAU_MAPPING_PROFILE_START(Timer, tid)
290#define TAU_MAPPING_PROFILE_STOP(tid)
291#define TAU_MAPPING_PROFILE_EXIT(msg, tid)
292#define TAU_MAPPING_DB_DUMP(tid)
293#define TAU_MAPPING_DB_PURGE(tid)
294#define TAU_MAPPING_PROFILE_SET_NODE(node, tid)
295#define TAU_MAPPING_PROFILE_SET_GROUP_NAME(timer, name)
296#define TAU_PROFILE_TIMER_SET_NAME(t, newname)
297#define TAU_PROFILE_TIMER_SET_TYPE(t, newname)
298#define TAU_PROFILE_TIMER_SET_GROUP(t, id)
299#define TAU_MAPPING_PROFILE_SET_NAME(timer, name)
300#define TAU_MAPPING_PROFILE_SET_TYPE(timer, name)
301#define TAU_MAPPING_PROFILE_SET_GROUP(timer, id)
302#define TAU_MAPPING_PROFILE_GET_GROUP_NAME(timer)
303#define TAU_MAPPING_PROFILE_GET_GROUP(timer)
304#define TAU_MAPPING_PROFILE_GET_NAME(timer)
305#define TAU_MAPPING_PROFILE_GET_TYPE(timer)
307#define TAU_PHASE(name, type, group)
308#define TAU_PHASE_CREATE_STATIC(var, name, type, group)
309#define TAU_PHASE_CREATE_DYNAMIC(var, name, type, group)
310#define TAU_PHASE_START(var)
311#define TAU_PHASE_STOP(var)
312#define TAU_GLOBAL_PHASE(timer, name, type, group)
313#define TAU_GLOBAL_PHASE_START(timer)
314#define TAU_GLOBAL_PHASE_STOP(timer)
315#define TAU_GLOBAL_PHASE_EXTERNAL(timer)
316#define TAU_GLOBAL_TIMER(timer, name, type, group)
317#define TAU_GLOBAL_TIMER_EXTERNAL(timer)
318#define TAU_GLOBAL_TIMER_START(timer)
319#define TAU_GLOBAL_TIMER_STOP()
332#if defined(__LITTLE_ENDIAN__) || defined(__i386__)
333#undef WORDS_BIGENDIAN
335#elif defined(__BIG_ENDIAN__) || defined(__ppc__)
336#undef WORDS_BIGENDIAN
337#define WORDS_BIGENDIAN 1
344#define NATIVE_WORDSIZE __WORDSIZE
345#elif defined(_LP64) || defined(_WIN64)
346#define NATIVE_WORDSIZE 64
348#define NATIVE_WORDSIZE 32
358#elif defined(_MSC_VER)
359#define ALIGN_4BYTE __declspec(align(4))
360#define ALIGN_8BYTE __declspec(align(8))
361#define ALIGN_16BYTE __declspec(align(16))
362#define ALIGN_32BYTE __declspec(align(32))
363#define ALIGN_64BYTE __declspec(align(64))
364#elif defined(__GNUC__)
365#define ALIGN_4BYTE __attribute__ ((aligned (4)))
366#define ALIGN_8BYTE __attribute__ ((aligned (8)))
367#define ALIGN_16BYTE __attribute__ ((aligned (16)))
368#define ALIGN_32BYTE __attribute__ ((aligned (32)))
369#define ALIGN_64BYTE __attribute__ ((aligned (64)))
381#if !defined(LINMATH_ALIGN)
384#undef MEMORY_HOOK_DO_ALIGN
386#elif defined(USE_MEMORY_DLMALLOC)
388#undef MEMORY_HOOK_DO_ALIGN
390#elif defined(USE_MEMORY_MIMALLOC)
392#undef MEMORY_HOOK_DO_ALIGN
394#elif defined(USE_MEMORY_PTMALLOC2)
398#define MEMORY_HOOK_DO_ALIGN 1
400#elif (defined(IS_OSX) || defined(_WIN64)) && !defined(__AVX__)
402#undef MEMORY_HOOK_DO_ALIGN
404#elif defined(MEMORY_HOOK_DO_ALIGN)
411#define USE_MEMORY_DLMALLOC 1
418#if defined(HAVE_EIGEN) && defined(__AVX__) && defined(STDFLOAT_DOUBLE)
421#define MEMORY_HOOK_ALIGNMENT 32
423#define MEMORY_HOOK_ALIGNMENT 16
427#elif defined(IS_OSX) || NATIVE_WORDSIZE >= 64
428#define MEMORY_HOOK_ALIGNMENT 16
430#define MEMORY_HOOK_ALIGNMENT 8
435#define EIGEN_MAX_ALIGN_BYTES MEMORY_HOOK_ALIGNMENT
436#ifndef EIGEN_MPL2_ONLY
437#define EIGEN_MPL2_ONLY 1
439#if !defined(_DEBUG) && !defined(EIGEN_NO_DEBUG)
440#define EIGEN_NO_DEBUG 1
445#if defined(USE_MEMORY_MIMALLOC) || defined(USE_MEMORY_PTMALLOC2) || defined(USE_MEMORY_DLMALLOC) || defined(DO_MEMORY_USAGE) || defined(MEMORY_HOOK_DO_ALIGN)
451#define USE_MEMORY_NOWRAPPERS 1
456#define USE_STL_ALLOCATOR 1
466#define BEGIN_PUBLISH __begin_publish
467#define END_PUBLISH __end_publish
468#define BLOCKING __blocking
469#define MAKE_PROPERTY(property_name, ...) __make_property(property_name, __VA_ARGS__)
470#define MAKE_PROPERTY2(property_name, ...) __make_property2(property_name, __VA_ARGS__)
471#define MAKE_SEQ(seq_name, num_name, element_name) __make_seq(seq_name, num_name, element_name)
472#define MAKE_SEQ_PROPERTY(property_name, ...) __make_seq_property(property_name, __VA_ARGS__)
473#define MAKE_MAP_PROPERTY(property_name, ...) __make_map_property(property_name, __VA_ARGS__)
474#define MAKE_MAP_KEYS_SEQ(property_name, ...) __make_map_keys_seq(property_name, __VA_ARGS__)
475#define EXTENSION(x) __extension x
476#define EXTEND __extension
481#define MAKE_PROPERTY(property_name, ...)
482#define MAKE_PROPERTY2(property_name, ...)
483#define MAKE_SEQ(seq_name, num_name, element_name)
484#define MAKE_SEQ_PROPERTY(property_name, ...)
485#define MAKE_MAP_PROPERTY(property_name, ...)
486#define MAKE_MAP_KEYS_SEQ(property_name, ...)
492#if defined(WIN32_VC) && !defined(CPPPARSER) && !defined(LINK_ALL_STATIC)
493#define EXPORT_CLASS __declspec(dllexport)
494#define IMPORT_CLASS __declspec(dllimport)
495#elif __GNUC__ >= 4 && !defined(CPPPARSER) && !defined(LINK_ALL_STATIC)
496#define EXPORT_CLASS __attribute__((visibility("default")))
504#if defined(CPPPARSER) || defined(LINK_ALL_STATIC)
507#elif defined(_MSC_VER)
515#define IMPORT_TEMPL extern
517#define EXPORT_TEMPL extern
518#define IMPORT_TEMPL extern