Qore Programming Language
2.3.0
Loading...
Searching...
No Matches
Restrictions.h
Go to the documentation of this file.
1
/* -*- mode: c++; indent-tabs-mode: nil -*- */
2
/*
3
Restrictions.h
4
5
QORE programming language
6
7
Copyright (C) 2003 - 2026 Qore Technologies, s.r.o.
8
9
Permission is hereby granted, free of charge, to any person obtaining a
10
copy of this software and associated documentation files (the "Software"),
11
to deal in the Software without restriction, including without limitation
12
the rights to use, copy, modify, merge, publish, distribute, sublicense,
13
and/or sell copies of the Software, and to permit persons to whom the
14
Software is furnished to do so, subject to the following conditions:
15
16
The above copyright notice and this permission notice shall be included in
17
all copies or substantial portions of the Software.
18
19
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25
DEALINGS IN THE SOFTWARE.
26
27
Note that the Qore library is released under a choice of three open-source
28
licenses: MIT (as above), LGPL 2+, or GPL 2+; see README-LICENSE for more
29
information.
30
*/
31
32
#ifndef _QORE_RESTRICTIONS_H
33
34
#define _QORE_RESTRICTIONS_H
35
40
#define PO_NO_GLOBAL_VARS (1 << 0)
41
#define PO_NO_SUBROUTINE_DEFS (1 << 1)
42
#define PO_NO_THREAD_CONTROL (1 << 2)
43
#define PO_NO_THREAD_CLASSES (1 << 3)
44
#define PO_NO_TOP_LEVEL_STATEMENTS (1 << 4)
45
#define PO_ALLOW_REPARSE (1 << 5)
46
#define PO_BROKEN_NARROWED_TYPES (1 << 6)
47
#define PO_NO_TYPEDEF (1 << 7)
48
#define PO_NO_ENUM (1 << 8)
49
#define PO_NO_INHERIT_SYSTEM_CLASSES (1 << 9)
50
#define PO_NO_INHERIT_USER_CLASSES (1 << 10)
51
#define PO_NO_CHILD_PO_RESTRICTIONS (1 << 11)
52
#define PO_NO_EXTERNAL_PROCESS (1 << 12)
53
#define PO_REQUIRE_OUR (1 << 13)
54
#define PO_NO_PROCESS_CONTROL (1 << 14)
55
#define PO_NO_NETWORK (1 << 15)
56
#define PO_NO_FILESYSTEM (1 << 16)
57
#define PO_LOCK_WARNINGS (1 << 17)
58
#define PO_NO_DATABASE (1 << 18)
59
#define PO_NO_GUI (1 << 19)
60
#define PO_NO_TERMINAL_IO (1 << 20)
61
#define PO_REQUIRE_TYPES (1 << 21)
62
#define PO_NO_EXTERNAL_INFO (1 << 22)
63
#define PO_NO_THREAD_INFO (1 << 23)
64
#define PO_NO_LOCALE_CONTROL (1 << 24)
65
#define PO_REQUIRE_PROTOTYPES (1 << 25)
66
#define PO_STRICT_ARGS (1 << 26)
67
#define PO_REQUIRE_BARE_REFS (1 << 27)
68
#define PO_ASSUME_LOCAL (1 << 28)
69
#define PO_NO_MODULES (1 << 29)
70
#define PO_NO_INHERIT_USER_FUNC_VARIANTS (1 << 30)
71
#define PO_NO_INHERIT_SYSTEM_FUNC_VARIANTS (1LL << 31)
72
#define PO_NO_INHERIT_GLOBAL_VARS (1LL << 32)
73
#define PO_IN_MODULE (1LL << 33)
74
#define PO_NO_EMBEDDED_LOGIC (1LL << 34)
75
#define PO_STRICT_BOOLEAN_EVAL (1LL << 35)
76
#define PO_ALLOW_INJECTION (1LL << 36)
77
#define PO_NO_INHERIT_USER_CONSTANTS (1LL << 37)
78
#define PO_NO_INHERIT_SYSTEM_CONSTANTS (1LL << 38)
79
#define PO_BROKEN_LIST_PARSING (1LL << 39)
80
#define PO_BROKEN_LOGIC_PRECEDENCE (1LL << 40)
81
#define PO_BROKEN_INT_ASSIGNMENTS (1LL << 41)
82
#define PO_BROKEN_OPERATORS (1LL << 42)
83
#define PO_BROKEN_LOOP_STATEMENT (1LL << 43)
84
#define PO_STRONG_ENCAPSULATION (1LL << 44)
85
#define PO_NO_UNCONTROLLED_APIS (1LL << 45)
86
#define PO_NO_DEBUGGING (1LL << 46)
87
#define PO_BROKEN_REFERENCES (1LL << 47)
88
#define PO_NO_INHERIT_USER_HASHDECLS (1LL << 48)
89
#define PO_NO_INHERIT_SYSTEM_HASHDECLS (1LL << 49)
90
#define PO_ALLOW_WEAK_REFERENCES (1LL << 50)
91
#define PO_ALLOW_DEBUGGER (1LL << 51)
92
#define PO_ALLOW_STATEMENT_NO_EFFECT (1LL << 52)
93
#define PO_NO_REFLECTION (1LL << 53)
94
#define PO_NO_TRANSIENT (1LL << 54)
95
#define PO_BROKEN_SPRINTF (1LL << 55)
96
#define PO_BROKEN_CAST (1LL << 56)
97
#define PO_ALLOW_RETURNS (1LL << 57)
99
#define PO_STRICT_TYPES 0
100
#define PO_BROKEN_NAMESPACE_RESOLUTION (1LL << 58)
101
#define PO_BROKEN_RANGE (1LL << 59)
102
#define PO_NO_INHERIT_PROGRAM_DATA (1LL << 60)
103
#define PO_BROKEN_VARARGS (1LL << 61)
104
#define PO_BROKEN_LIST_RANGE (1LL << 62)
105
#define PO_ENABLE_DEBUG (1LL << 63)
106
107
// aliases for old defines
108
#define PO_NO_SYSTEM_FUNC_VARIANTS PO_NO_INHERIT_SYSTEM_FUNC_VARIANTS
109
#define PO_NO_SYSTEM_CLASSES PO_NO_INHERIT_SYSTEM_CLASSES
110
#define PO_NO_USER_CLASSES PO_NO_INHERIT_USER_CLASSES
111
112
// TODO: these are documented but unimplemented parse options (no bits available)
113
#define PO_NO_CLASS_DEFS 0
114
#define PO_NO_CONSTANT_DEFS 0
115
#define PO_NO_NAMESPACE_DEFS 0
116
#define PO_NO_NEW 0
117
118
#define PO_DEFAULT 0
119
121
#define PO_SYSTEM_OPS (PO_IN_MODULE)
122
124
#define PO_ALLOW_BARE_REFS PO_REQUIRE_BARE_REFS
125
126
// combination options
128
#define PO_NO_THREADS (PO_NO_THREAD_CONTROL|PO_NO_THREAD_CLASSES|PO_NO_THREAD_INFO)
129
131
#define PO_NO_EXTERNAL_ACCESS (PO_NO_PROCESS_CONTROL|PO_NO_NETWORK|PO_NO_FILESYSTEM|PO_NO_DATABASE \
132
|PO_NO_EXTERNAL_INFO|PO_NO_EXTERNAL_PROCESS|PO_NO_MODULES|PO_NO_UNCONTROLLED_APIS)
133
135
#define PO_NO_IO (PO_NO_GUI|PO_NO_TERMINAL_IO|PO_NO_FILESYSTEM|PO_NO_NETWORK|PO_NO_DATABASE \
136
|PO_NO_UNCONTROLLED_APIS)
137
139
#define PO_LOCKDOWN (PO_NO_EXTERNAL_ACCESS|PO_NO_THREADS|PO_NO_IO|PO_NO_REFLECTION)
140
142
#define PO_NEW_STYLE (PO_ALLOW_BARE_REFS|PO_ASSUME_LOCAL)
143
145
148
#define PO_MODERN (PO_NEW_STYLE|PO_REQUIRE_TYPES|PO_STRICT_ARGS)
149
151
#define PO_POSITIVE_OPTIONS (PO_NO_CHILD_PO_RESTRICTIONS|PO_ALLOW_INJECTION|PO_ALLOW_WEAK_REFERENCES \
152
|PO_ALLOW_DEBUGGER|PO_ENABLE_DEBUG|PO_ALLOW_REPARSE)
153
155
#define PO_FREE_OPTIONS (PO_ALLOW_BARE_REFS|PO_ASSUME_LOCAL|PO_STRICT_BOOLEAN_EVAL \
156
|PO_BROKEN_LIST_PARSING|PO_BROKEN_LOGIC_PRECEDENCE|PO_BROKEN_INT_ASSIGNMENTS|PO_BROKEN_OPERATORS \
157
|PO_BROKEN_LOOP_STATEMENT|PO_BROKEN_REFERENCES|PO_BROKEN_SPRINTF|PO_BROKEN_RANGE|PO_BROKEN_VARARGS \
158
|PO_BROKEN_LIST_RANGE|PO_BROKEN_NARROWED_TYPES|PO_BROKEN_NAMESPACE_RESOLUTION)
159
161
#define PO_STYLE_OPTIONS (PO_NO_TOP_LEVEL_STATEMENTS|PO_REQUIRE_PROTOTYPES|PO_REQUIRE_TYPES \
162
|PO_STRICT_ARGS)
163
165
#define PO_FREE_STYLE_OPTIONS (PO_FREE_OPTIONS|PO_STYLE_OPTIONS)
166
168
#define PO_USER_INHERITANCE_OPTIONS (PO_NO_INHERIT_USER_CLASSES|PO_NO_INHERIT_USER_FUNC_VARIANTS \
169
|PO_NO_INHERIT_GLOBAL_VARS|PO_NO_INHERIT_USER_CONSTANTS|PO_NO_INHERIT_USER_HASHDECLS)
170
172
#define PO_SYSTEM_INHERITANCE_OPTIONS (PO_NO_INHERIT_SYSTEM_CLASSES|PO_NO_INHERIT_SYSTEM_FUNC_VARIANTS \
173
|PO_NO_INHERIT_SYSTEM_CONSTANTS|PO_NO_INHERIT_SYSTEM_HASHDECLS|PO_NO_INHERIT_PROGRAM_DATA)
174
176
#define PO_INHERITANCE_OPTIONS (PO_USER_INHERITANCE_OPTIONS|PO_SYSTEM_INHERITANCE_OPTIONS)
177
179
#define PO_NO_USER_API PO_USER_INHERITANCE_OPTIONS
180
182
#define PO_NO_SYSTEM_API PO_SYSTEM_INHERITANCE_OPTIONS
183
185
#define PO_NO_API PO_INHERITANCE_OPTIONS
186
187
#define QDOM_DEFAULT 0
188
#define QDOM_PROCESS PO_NO_PROCESS_CONTROL
189
#define QDOM_NETWORK PO_NO_NETWORK
190
#define QDOM_EXTERNAL_PROCESS PO_NO_EXTERNAL_PROCESS
191
#define QDOM_FILESYSTEM PO_NO_FILESYSTEM
192
#define QDOM_THREAD_CLASS PO_NO_THREAD_CLASSES
193
#define QDOM_THREAD_CONTROL PO_NO_THREAD_CONTROL
194
#define QDOM_DATABASE PO_NO_DATABASE
195
#define QDOM_GUI PO_NO_GUI
196
#define QDOM_TERMINAL_IO PO_NO_TERMINAL_IO
197
#define QDOM_EXTERNAL_INFO PO_NO_EXTERNAL_INFO
198
#define QDOM_THREAD_INFO PO_NO_THREAD_INFO
199
#define QDOM_LOCALE_CONTROL PO_NO_LOCALE_CONTROL
200
#define QDOM_MODULES PO_NO_MODULES
201
#define QDOM_IN_MODULE PO_IN_MODULE
202
#define QDOM_EMBEDDED_LOGIC PO_NO_EMBEDDED_LOGIC
203
#define QDOM_INJECTION PO_ALLOW_INJECTION
204
#define QDOM_UNCONTROLLED_API PO_NO_UNCONTROLLED_APIS
205
#define QDOM_DEBUGGER PO_ALLOW_DEBUGGER
206
#define QDOM_REFLECTION PO_NO_REFLECTION
207
208
#endif
//_QORE_DOMAIN_H