File: NstApiConfig.hpp

package info (click to toggle)
libretro-nestopia 1.52.0%2B20230102.gitcb1e24e-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 12,960 kB
  • sloc: cpp: 107,513; xml: 27,221; python: 1,329; ansic: 772; makefile: 634
file content (134 lines) | stat: -rw-r--r-- 6,066 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
////////////////////////////////////////////////////////////////////////////////////////
//
// Nestopia - NES/Famicom emulator written in C++
//
// Copyright (C) 2003-2008 Martin Freij
//
// This file is part of Nestopia.
//
// Nestopia is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// Nestopia is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Nestopia; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//
////////////////////////////////////////////////////////////////////////////////////////
*/

#ifndef NST_BASE_H
#error Do not include NstApConfig.hpp directly!
#endif

/*
////////////////////////////////////////////////////////////////////////////////////////
//
// Compiler Configuration:
// -----------------------
//
// NST_DEBUG                 - Debug mode compilation.
//
// NST_PRAGMA_ONCE           - Define if #pragma once is supported. Auto-defined if
//                             compiler is MCW or MSVC.
//
// NST_U64 <type>            - For native 64bit (or greater) integer support. May not
//                             be needed if compiler is BC, GCC, ICC, MSVC or supports
//                             the C99 long long integer type.
//
//                             Example: #define NST_U64 unsigned long long
//
//                             If no suitable type is available, a default class based
//                             implementation will be used which may generate slower code.
//
// NST_MM_INTRINSICS         - For MMX/SSE compiler intrinsics support through
//                             xmmintrin.h/emmintrin.h/mmintrin.h. Auto-defined if
//                             compiler is Win32 MSVC and _M_IX86 is defined.
//
// NST_CALL <attribute>      - Compiler/platform specific calling convention for non-member
//                             functions. Placed between return type and function name, e.g
//                             void NST_CALL DoSomething().
//
//                             Example usage on a Win32 platform: #define NST_CALL __fastcall
//
// NST_CALLBACK <attribute>  - Same as above but for user-callback functions only. If
//                             defined, you're responsible for decorating your own
//                             callback functions with it.
//
// NST_LINEBREAK <string>    - Character sequence for line breaks. Default is "\n", or "\r\n"
//                             if target platform is Win32.
//
//                             Example usage in Nestopia:
//
//                              Print( "Hey!" NST_LINEBREAK "get off my lawn!" NST_LINEBREAK );
//
// NST_NO_INLINE <attribute> - To prevent automatic inline expansion of certain functions
//                             that won't benefit from it. Auto-defined if compiler is
//                             GCC, ICC or MSVC.
//
// NST_RESTRICT <attribute>  - C99 restrict qualifier support. Used on pointer types to
//                             inform the compiler that they're are not aliased which may
//                             enable it to generate faster code. Auto-defined if compiler
//                             is GCC, ICC or MSVC.
//
// NST_ASSUME(x) y(x)        - Optimization hint for the compiler. Informs that the condition
//                             will always evaluate to true. Should not be used if the condition
//                             checking imposes a performance penalty as it's not intended for
//                             debugging use. Auto-defined if compiler is MSVC.
//
//                             Example usage in Nestopia:
//
//                             #ifdef NST_DEBUG
//                              assert( miss_july == hot );
//                             #else
//                              NST_ASSUME( miss_july == hot );
//                             #endif
//
// NST_FASTDELEGATE          - Define this if your compiler can handle casts between member
//                             function pointers of different types and calls through them.
//
//                             If the size required to store a non-virtual member function
//                             pointer is deemed too large, as in
//
//                             sizeof( void (Class::*)() ) > sizeof( void (*)() )
//
//                             this option is not worth using and Nestopia will force a
//                             compile time error. Auto-defined if compiler is MSVC.
//
// Abbrevations:
//
// BC - Borland C++
// GCC - GNU Compiler Collection
// ICC - Intel C/C++ Compiler
// MCW - Metrowerks CodeWarrior
// MSVC - Microsoft Visual C++
//
////////////////////////////////////////////////////////////////////////////////////////
*/

/*
////////////////////////////////////////////////////////////////////////////////////////
//
// Define to disable a particular feature.
//
// NST_NO_ZLIB    - ZLib compression library. Not recommended to disable
//                  unless it's unavailable on the target platform. The core
//                  uses it internally for save states and the rewinder
//                  feature. Although they'll still work without them, memory
//                  footprint will increase drastically.
//
// NST_NO_HQ2X    - hq2x and hq3x video filters
//
// NST_NO_SCALEX  - Scale2x and Scale3x video filters
//
// NST_NO_2XSAI   - 2xSaI video filter
//
////////////////////////////////////////////////////////////////////////////////////////
*/