1 | #ifndef _42TinyJS_config_h__
|
---|
2 | #define _42TinyJS_config_h__
|
---|
3 |
|
---|
4 | /*
|
---|
5 | * 42TinyJS
|
---|
6 | *
|
---|
7 | * A fork of TinyJS with the goal to makes a more JavaScript/ECMA compliant engine
|
---|
8 | *
|
---|
9 | * Authored By Armin Diedering <armin@diedering.de>
|
---|
10 | *
|
---|
11 | * Copyright (C) 2010-2013 ardisoft
|
---|
12 | *
|
---|
13 | *
|
---|
14 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
|
---|
15 | * this software and associated documentation files (the "Software"), to deal in
|
---|
16 | * the Software without restriction, including without limitation the rights to
|
---|
17 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
---|
18 | * of the Software, and to permit persons to whom the Software is furnished to do
|
---|
19 | * so, subject to the following conditions:
|
---|
20 |
|
---|
21 | * The above copyright notice and this permission notice shall be included in all
|
---|
22 | * copies or substantial portions of the Software.
|
---|
23 |
|
---|
24 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
---|
25 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
---|
26 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
---|
27 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
---|
28 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
---|
29 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
---|
30 | * SOFTWARE.
|
---|
31 | */
|
---|
32 |
|
---|
33 | //////////////////////////////////////////////////////////////////////////
|
---|
34 |
|
---|
35 | /* POOL-ALLOCATOR
|
---|
36 | * ==============
|
---|
37 | * To speed-up new & delete 42TinyJS adds an object-pool
|
---|
38 | * The pool is activated by default.
|
---|
39 | * To deactivate this stuff define NO_POOL_ALLOCATOR
|
---|
40 | */
|
---|
41 | //#define NO_POOL_ALLOCATOR
|
---|
42 |
|
---|
43 | /*
|
---|
44 | * for debugging-stuff you can define DEBUG_POOL_ALLOCATOR
|
---|
45 | * if a memory-leak detected the allocator usage is printed to stderr
|
---|
46 | */
|
---|
47 | //#define DEBUG_POOL_ALLOCATOR
|
---|
48 | /*
|
---|
49 | * with define LOG_POOL_ALLOCATOR_MEMORY_USAGE
|
---|
50 | * the allocator usage is always printed to stderr
|
---|
51 | */
|
---|
52 | //#define LOG_POOL_ALLOCATOR_MEMORY_USAGE
|
---|
53 |
|
---|
54 | // NOTE: _DEBUG or LOG_POOL_ALLOCATOR_MEMORY_USAGE implies DEBUG_POOL_ALLOCATOR
|
---|
55 |
|
---|
56 | //////////////////////////////////////////////////////////////////////////
|
---|
57 |
|
---|
58 | /* REGEXP-SUPPORT
|
---|
59 | * ==============
|
---|
60 | * The RegExp-support needs boost-regex or TR1-regex
|
---|
61 | * To deactivate this stuff define NO_REGEXP
|
---|
62 | */
|
---|
63 | //#define NO_REGEXP
|
---|
64 |
|
---|
65 | /* if NO_REGEXP not defined <regex> is included and std::regex is used
|
---|
66 | * you can define HAVE_BOOST_REGEX and <boost/regex.hpp> is included and boost::regex is used
|
---|
67 | */
|
---|
68 | #define HAVE_BOOST_REGEX
|
---|
69 |
|
---|
70 | /* or you can define HAVE_TR1_REGEX and <tr1/regex> is included and std::tr1::regex is used
|
---|
71 | */
|
---|
72 | //#define HAVE_TR1_REGEX
|
---|
73 |
|
---|
74 |
|
---|
75 | //////////////////////////////////////////////////////////////////////////
|
---|
76 |
|
---|
77 | /* LET-STUFF
|
---|
78 | * =========
|
---|
79 | * Redeclaration of LET-vars is not allowed in block-scopes.
|
---|
80 | * But in the root- and functions-scopes it is currently allowed
|
---|
81 | * In future ECMAScript versions this will be also in root-and functions-scopes forbidden
|
---|
82 | * To enable the future behavior define PREVENT_REDECLARATION_IN_FUNCTION_SCOPES
|
---|
83 | */
|
---|
84 | //#define PREVENT_REDECLARATION_IN_FUNCTION_SCOPES
|
---|
85 |
|
---|
86 |
|
---|
87 | //////////////////////////////////////////////////////////////////////////
|
---|
88 |
|
---|
89 | /* MULTI-THREADING
|
---|
90 | * ===============
|
---|
91 | * 42TinyJS is basically thread-save.
|
---|
92 | * You can run different or the same JS-code simultaneously in different instances of class TinyJS.
|
---|
93 | * The threading-stuff is currently only needed by the pool-allocator
|
---|
94 | * to deactivate threading define NO_THREADING
|
---|
95 | * NOTE: if NO_POOL_ALLOCATOR not defined you can not run JS-code simultaneously
|
---|
96 | * NO_POOL_ALLOCATOR implies NO_THREADING
|
---|
97 | */
|
---|
98 |
|
---|
99 | //#define NO_THREADING
|
---|
100 |
|
---|
101 | /* on Windows the windows-threading-API is used by default.
|
---|
102 | * on non-Windows (WIN32 is not defined) it is tried to use the POSIX pthread-API
|
---|
103 | * to force the pthread-API define HAVE_PTHREAD (windows needs in this case
|
---|
104 | * a pthread-lib e.g http://http://sourceware.org/pthreads-win32/)
|
---|
105 | */
|
---|
106 | //#define HAVE_PTHREAD
|
---|
107 |
|
---|
108 | /* you can implement your own custom thread-implementation.
|
---|
109 | * to prevent the using of the win- or pthread-API define HAVE_CUSTOM_THREADING_IMPL
|
---|
110 | */
|
---|
111 | //#define HAVE_CUSTOM_THREADING_IMPL
|
---|
112 |
|
---|
113 | ////////////////////////////////////////////////
|
---|
114 | // DO NOT MAKE CHANGES OF THE FOLLOWING STUFF //
|
---|
115 | ////////////////////////////////////////////////
|
---|
116 |
|
---|
117 | #if defined(NO_POOL_ALLOCATOR) && !defined(NO_THREADING)
|
---|
118 | # define NO_THREADING
|
---|
119 | #endif
|
---|
120 |
|
---|
121 | #if !defined(NO_POOL_ALLOCATOR) && defined(NO_THREADING)
|
---|
122 | #pragma message("\n***********************************************************************\n\
|
---|
123 | * You have defined NO_THREADING and not defined NO_POOL_ALLOCATOR\n\
|
---|
124 | * NOTE: you can not run JS-code simultaneously in different threads\n\
|
---|
125 | ***********************************************************************\n")
|
---|
126 | #endif
|
---|
127 |
|
---|
128 |
|
---|
129 | #endif // _42TinyJS_config_h__
|
---|