NeuralEngine
A Game Engine with embeded Machine Learning algorithms based on Gaussian Processes.
NeCoreLib.h
1
11#pragma once
12
13#pragma comment(lib, "windowscodecs.lib")
14
15//----------------------------------------------------------------------------
16// Platform-specific information. The defines to control which platform is
17// included are listed below. Add others as needed.
18//
19// _WIN32 or WIN32 : Microsoft Windows
20// __APPLE__ : Macintosh OS X
21// __linux__ or __LINUX__ : Linux
22//----------------------------------------------------------------------------
23// Microsoft Windows platform
24//----------------------------------------------------------------------------
25#if !defined(__LINUX__) && (defined(WIN32) || defined(_WIN64))
26#define __MSWINDOWS__
27
28#if !defined(_MSC_VER)
29#error Microsoft Visual Studio 2013 or later is required.
30#endif
31
32// Microsoft Visual Studio versions:
33// MSVC 6 is version 12.00
34// MSVC 7.0 is version 13.00 (MSVS 2002)
35// MSVC 7.1 is version 13.10 (MSVS 2003)
36// MSVC 8.0 is version 14.00 (MSVS 2005)
37// MSVC 9.0 is version 15.00 (MSVS 2008)
38// MSVC 10.0 is version 16.00 (MSVS 2010)
39// MSVC 11.0 is version 17.00 (MSVS 2012)
40// Currently, projects are provided only for MSVC 10.0 and 11.0.
41#if _MSC_VER < 1800
42#error Microsoft Visual Studio 2013 or later is required.
43#endif
44
45// Debug build values (choose_your_value is 0, 1, or 2)
46// 0: Disables checked iterators and disables iterator debugging.
47// 1: Enables checked iterators and disables iterator debugging.
48// 2: (default) Enables iterator debugging; checked iterators are not relevant.
49//
50// Release build values (choose_your_value is 0 or 1)
51// 0: (default) Disables checked iterators.
52// 1: Enables checked iterators; iterator debugging is not relevant.
53//
54// #define _ITERATOR_DEBUG_LEVEL choose_your_value
55
56#endif // WIN32 or _WIN64
57
58// Disable the Microsoft warnings about not using the secure functions.
59#pragma warning(disable : 4996)
60
61// The use of NE_<libname>_ITEM to export an entire class generates warnings
62// when member data and functions involving templates or inlines occur. To
63// avoid the warning, NE_<libname>_ITEM can be applied only to those items
64// that really need to be exported.
65#pragma warning(disable : 4251)
66
67
68//----------------------------------------------------------------------------
69// PC Linux platform
70//----------------------------------------------------------------------------
71#if !defined(__LINUX__) && defined(__linux__)
72// Apparently, many PC Linux flavors define __linux__, but we have used
73// __LINUX__. To avoid breaking code by replacing __LINUX__ by __linux__,
74// we will just define __LINUX__.
75#define __LINUX__
76#endif
77#if defined(__LINUX__)
78
79// Support for standard integer types.
80#include <inttypes.h>
81
82#define NE_LITTLE_ENDIAN
83
84#endif
85//----------------------------------------------------------------------------
86
87// Begin Microsoft Windows DLL support.
88#if defined(NE_ENGINE_DLL_EXPORT)
89// For the DLL library.
90#define NE_IMPEXP __declspec(dllexport)
91#elif defined(NE_ENGINE_DLL_IMPORT)
92// For a client of the DLL library.
93#define NE_IMPEXP __declspec(dllimport)
94#else
95// For the static library and for Apple/Linux.
96#define NE_IMPEXP
97#endif
98// End Microsoft Windows DLL support.
99
100
101// Expose exactly one of these.
102#define NE_USE_ROW_MAJOR
103//#define NE_USE_COL_MAJOR
104
105// Expose exactly one of these.
106#define NE_USE_MAT_VEC
107//#define NE_USE_VEC_MAT
108
109#if (defined(NE_USE_ROW_MAJOR) && defined(NE_USE_COL_MAJOR)) || (!defined(NE_USE_ROW_MAJOR) && !defined(NE_USE_COL_MAJOR))
110#error Exactly one storage order must be specified.
111#endif
112
113#if (defined(NE_USE_MAT_VEC) && defined(NE_USE_VEC_MAT)) || (!defined(NE_USE_MAT_VEC) && !defined(NE_USE_VEC_MAT))
114#error Exactly one multiplication convention must be specified.
115#endif