2 { ---------------------------------------------------------------------------- }
\r
3 { Version Information - Do not change. }
\r
4 { ---------------------------------------------------------------------------- }
\r
6 { ---------------------------------------------------------------------------- }
\r
8 { ---------------------------------------------------------------------------- }
\r
18 { ---------------------------------------------------------------------------- }
\r
19 { VERXXX to COMPILER_X, DELPHI_X and CPPB_X mappings
\r
20 { ---------------------------------------------------------------------------- }
\r
23 {$DEFINE COMPILER_7}
\r
29 {$DEFINE COMPILER_6}
\r
40 {$DEFINE COMPILER_5}
\r
51 {$DEFINE COMPILER_4}
\r
57 {$DEFINE COMPILER_4}
\r
63 {$DEFINE COMPILER_3}
\r
69 {$DEFINE COMPILER_3}
\r
75 {$DEFINE COMPILER_2} // C++ Builder v1 compiler is really v2
\r
81 {$DEFINE COMPILER_2}
\r
87 {$DEFINE COMPILER_1}
\r
92 { ---------------------------------------------------------------------------- }
\r
93 { DELPHI_X_UP from DELPHI_X mappings
\r
94 { ---------------------------------------------------------------------------- }
\r
97 {$DEFINE DELPHI_1_UP}
\r
101 {$DEFINE DELPHI_1_UP}
\r
102 {$DEFINE DELPHI_2_UP}
\r
106 {$DEFINE DELPHI_1_UP}
\r
107 {$DEFINE DELPHI_2_UP}
\r
108 {$DEFINE DELPHI_3_UP}
\r
112 {$DEFINE DELPHI_1_UP}
\r
113 {$DEFINE DELPHI_2_UP}
\r
114 {$DEFINE DELPHI_3_UP}
\r
115 {$DEFINE DELPHI_4_UP}
\r
119 {$DEFINE DELPHI_1_UP}
\r
120 {$DEFINE DELPHI_2_UP}
\r
121 {$DEFINE DELPHI_3_UP}
\r
122 {$DEFINE DELPHI_4_UP}
\r
123 {$DEFINE DELPHI_5_UP}
\r
127 {$DEFINE DELPHI_1_UP}
\r
128 {$DEFINE DELPHI_2_UP}
\r
129 {$DEFINE DELPHI_3_UP}
\r
130 {$DEFINE DELPHI_4_UP}
\r
131 {$DEFINE DELPHI_5_UP}
\r
132 {$DEFINE DELPHI_6_UP}
\r
136 {$DEFINE DELPHI_1_UP}
\r
137 {$DEFINE DELPHI_2_UP}
\r
138 {$DEFINE DELPHI_3_UP}
\r
139 {$DEFINE DELPHI_4_UP}
\r
140 {$DEFINE DELPHI_5_UP}
\r
141 {$DEFINE DELPHI_6_UP}
\r
142 {$DEFINE DELPHI_7_UP}
\r
145 { ---------------------------------------------------------------------------- }
\r
146 { CPPB_X_UP from CPPB_X mappings
\r
147 { ---------------------------------------------------------------------------- }
\r
150 {$DEFINE CPPB_1_UP}
\r
154 {$DEFINE CPPB_1_UP}
\r
155 {$DEFINE CPPB_3_UP}
\r
159 {$DEFINE CPPB_1_UP}
\r
160 {$DEFINE CPPB_3_UP}
\r
161 {$DEFINE CPPB_4_UP}
\r
165 {$DEFINE CPPB_1_UP}
\r
166 {$DEFINE CPPB_3_UP}
\r
167 {$DEFINE CPPB_4_UP}
\r
168 {$DEFINE CPPB_5_UP}
\r
172 // C++ Builder requires this if you use Delphi components in run-time packages.
\r
178 { ---------------------------------------------------------------------------- }
\r
180 { ---------------------------------------------------------------------------- }
\r
185 {$DEFINE COMPILER_7}
\r
191 {$DEFINE COMPILER_6}
\r
197 {$DEFINE KYLIX_1_UP}
\r
198 {$DEFINE KYLIX_2_UP}
\r
202 {$DEFINE KYLIX_1_UP}
\r
203 {$DEFINE KYLIX_2_UP}
\r
204 {$DEFINE KYLIX_3_UP}
\r
209 { ---------------------------------------------------------------------------- }
\r
210 { COMPIlER_X_UP from COMPILER_X mappings
\r
211 { ---------------------------------------------------------------------------- }
\r
213 {$IFDEF COMPILER_1}
\r
214 {$DEFINE COMPILER_1_UP}
\r
217 {$IFDEF COMPILER_2}
\r
218 {$DEFINE COMPILER_1_UP}
\r
219 {$DEFINE COMPILER_2_UP}
\r
222 {$IFDEF COMPILER_3}
\r
223 {$DEFINE COMPILER_1_UP}
\r
224 {$DEFINE COMPILER_2_UP}
\r
225 {$DEFINE COMPILER_3_UP}
\r
228 {$IFDEF COMPILER_4}
\r
229 {$DEFINE COMPILER_1_UP}
\r
230 {$DEFINE COMPILER_2_UP}
\r
231 {$DEFINE COMPILER_3_UP}
\r
232 {$DEFINE COMPILER_4_UP}
\r
235 {$IFDEF COMPILER_5}
\r
236 {$DEFINE COMPILER_1_UP}
\r
237 {$DEFINE COMPILER_2_UP}
\r
238 {$DEFINE COMPILER_3_UP}
\r
239 {$DEFINE COMPILER_4_UP}
\r
240 {$DEFINE COMPILER_5_UP}
\r
243 {$IFDEF COMPILER_6}
\r
244 {$DEFINE COMPILER_1_UP}
\r
245 {$DEFINE COMPILER_2_UP}
\r
246 {$DEFINE COMPILER_3_UP}
\r
247 {$DEFINE COMPILER_4_UP}
\r
248 {$DEFINE COMPILER_5_UP}
\r
249 {$DEFINE COMPILER_6_UP}
\r
252 {$IFDEF COMPILER_7}
\r
253 {$DEFINE COMPILER_1_UP}
\r
254 {$DEFINE COMPILER_2_UP}
\r
255 {$DEFINE COMPILER_3_UP}
\r
256 {$DEFINE COMPILER_4_UP}
\r
257 {$DEFINE COMPILER_5_UP}
\r
258 {$DEFINE COMPILER_6_UP}
\r
259 {$DEFINE COMPILER_7_UP}
\r
262 { ---------------------------------------------------------------------------- }
\r
264 { ---------------------------------------------------------------------------- }
\r
266 {.$DEFINE DI_Check_Free}// Default: Off
\r
267 { If DI_Check_Free is defined, objects keep track if they were freed before the
\r
268 application exits. Disabeling DI_Check_Free will generate smaller and faster
\r
269 code. You need the DIContainers Library if you want to enable this option. }
\r
271 {.$DEFINE DI_Use_Wide_Char_Set_Consts}// Default: Off
\r
272 { If defined, code will use constants of WideChar sets. WideChar set constants
\r
273 will, however, cause a compiler error when compiled with TD32 debug info.
\r
274 This error was detected in D4, D5, D6 and D7. }
\r
276 {.$DEFINE DI_No_Range_Checking}// Default: Off
\r
277 { Defining DI_No_Range_Checking will suppress generation of code which checks
\r
278 for ranges errors. No error messages will be thrown in case of violations.
\r
279 Enabeling DI_No_Range_Checking generates faster and smaller code. }
\r
281 {.$DEFINE DI_No_Classes}// Default: Off
\r
282 { If defined, The Delphi Inspiration libraries try to avoid using and linking
\r
283 Delphi's Classes.pas. Not using Classes.pas usually results in a 15-17 KB
\r
284 smaller exe file size for console applications. For Delphi GUI applications,
\r
285 turning on DI_No_Classes may actually create larger file sizes. }
\r
287 {$DEFINE FLOAT_EXTENDED_PRECISION} // Default
\r
288 {.$DEFINE FLOAT_DOUBLE_PRECISION}
\r
289 {.$DEFINE FLOAT_SINGLE_PRECISION}
\r
290 { Math precision selection, mutually exclusive. }
\r
292 {.$DEFINE DI_No_Win_9x_Support}// Default: Off
\r
293 { Define DI_No_Win_9x_Support if you want to compile your application without
\r
294 support for the Win9x platforms Windows 95 and Windows 98. They will then
\r
295 run only on Windows NT / Windows 2000 / Windows XP. }
\r
297 {.$DEFINE DI_Show_Hints}// Default: Off
\r
298 { Generation of hints has been disabled for code which is known to be safe.
\r
299 To enable these hints, turn on DI_Show_Hints. }
\r
301 {.$DEFINE DI_Show_Warnings}// Default: Off
\r
302 { Generation of warnings has been disabled for code which is known to be safe.
\r
303 To enable these warnings, turn on DI_Show_Warnings. }
\r
305 { ---------------------------------------------------------------------------- }
\r
307 { ---------------------------------------------------------------------------- }
\r
309 {.$DEFINE DI_No_Containers_Assign}// Default: Off
\r
310 { If defined, the general assignment capabilities will not be compiled into
\r
311 DIContainers. Enabeling DI_No_Containers_Assign will generate smaller exe
\r
314 This option is only available for the DIContainers source code. }
\r
316 {.$DEFINE DI_No_Containers_Persistent}// Default: Off
\r
317 { If DI_No_Containers_Persistent is defined, all DIContainers will inherit
\r
318 directly from TObject instead of TPersistent and they will not have
\r
319 full streaming support in the IDE. Enabeling DI_No_Containers_Persistent will
\r
320 generate smaller exe files.
\r
322 This option is only available for the DIContainers source code. }
\r
324 {.$DEFINE DIC_Design} // Default: Off
\r
325 { This option is only relevant for modifications to the the DIContainers source code. }
\r
327 { ---------------------------------------------------------------------------- }
\r
329 { ---------------------------------------------------------------------------- }
\r
331 {.$DEFINE DI_No_FileFinder_Component}// Default: Off
\r
332 { If DI_No_FileFinder_Component is defined, TDIFileFinder inherites from TObject
\r
333 instead of TComponent. Enabling DI_No_FileFinder_Component creates smaller
\r
334 executable files, even more so if Classes.pas is not used. This can be
\r
335 useful for console or CGI applications.
\r
337 This option is only available for the TDIFileFinder source code. }
\r
339 { ---------------------------------------------------------------------------- }
\r
341 { ---------------------------------------------------------------------------- }
\r
343 {.$DEFINE DI_No_Pcre_Component}// Default: Off
\r
344 { If DI_No_Pcre_Component is defined, TDIPcre inherites from TObject
\r
345 instead of TComponent. Enabling DI_No_Pcre_Component creates smaller
\r
346 executable files, even more so if Classes.pas is not used. This can be
\r
347 useful for console applications or CGI / ISAPI DLLs.
\r
349 This option is only available for the DIPcre source code. }
\r
351 {.$DEFINE DI_No_Pcre_Range_Checking}// Default: Off
\r
352 { Defining DI_No_Pcre_Range_Checking will suppress generation of code which
\r
353 checks for ranges errors. No error messages will be thrown in case of
\r
354 violations. Enabeling DI_No_Pcre_Range_Checking generates faster and smaller
\r
357 This option is only available for the DIPcre source code. }
\r
359 { ---------------------------------------------------------------------------- }
\r
361 { ---------------------------------------------------------------------------- }
\r
363 {.$DEFINE DI_No_Unicode_Component}// Default: Off
\r
364 { If DI_No_Unicode_Component is defined, the DIUnicode classes inherit from
\r
365 TObject instead of TComponent. Enabling DI_No_Unicode_Component creates
\r
366 smaller executable files, even more so if Classes.pas is not used. This can be
\r
367 useful for console applications or CGI / ISAPI DLLs.
\r
369 This option is only available for the DIUnicode source code. }
\r
371 { ---------------------------------------------------------------------------- }
\r
373 { ---------------------------------------------------------------------------- }
\r
375 {.$DEFINE DI_No_ZipWriter_Component}// Default: Off
\r
376 { If DI_No_ZipWriter_Component is defined, TDIZipWriter inherites from TObject
\r
377 instead of TComponent. Enabling DI_No_ZipWriter_Component creates smaller
\r
378 executable files, even more so if Classes.pas is not used. This can be
\r
379 useful for console applications or CGI / ISAPI DLLs.
\r
381 This option is only available for the DIZipWriter source code. }
\r
383 { ---------------------------------------------------------------------------- }
\r
384 { Do not modify below here. }
\r
385 { ---------------------------------------------------------------------------- }
\r
387 { Check if one of the components requires Classes.pas
\r
388 and undefine DI_No_Classes accordingly. }
\r
390 {$IFNDEF DI_No_Containers_Persistent}
\r
391 {$UNDEF DI_No_Classes} // TPersistent is defined in Classes.pas.
\r
394 {$IFNDEF DI_No_FileFinder_component}
\r
395 {$UNDEF DI_No_Classes} // TComponent is defined in Classes.pas.
\r
398 {$IFNDEF DI_No_Pcre_component}
\r
399 {$UNDEF DI_No_Classes} // TComponent is defined in Classes.pas.
\r
402 {$IFNDEF DI_No_Unicode_component}
\r
403 {$UNDEF DI_No_Classes} // TComponent is defined in Classes.pas.
\r
406 {$IFNDEF DI_No_ZipWriter_component}
\r
407 {$UNDEF DI_No_Classes} // TComponent is defined in Classes.pas.
\r
410 { ---------------------------------------------------------------------------- }
\r
412 { ---------------------------------------------------------------------------- }
\r
415 (* The $A directive controls alignment of fields in record types.
\r
417 In the {$A+} state, fields in record types that are declared without the
\r
418 packed modifier are aligned. In the {$A-} state, fields in record types
\r
419 are never aligned. Record type field alignment is described in the Object
\r
420 Pascal Language Guide.
\r
422 Regardless of the state of the $A directive, variables and typed constants
\r
423 are always aligned for optimal access. In the {$A+} state, execution
\r
427 (* The $B directive switches between the two different models of code
\r
428 generation for the and and or Boolean operators.
\r
430 In the {$B+} state, the compiler generates code for complete Boolean
\r
431 expression evaluation. This means that every operand of a Boolean
\r
432 expression built from the and and or operators is guaranteed to be
\r
433 evaluated, even when the result of the entire expression is already known.
\r
435 In the {$B-} state, the compiler generates code for short-circuit Boolean
\r
436 expression evaluation, which means that evaluation stops as soon as the
\r
437 result of the entire expression becomes evident in left to right order
\r
441 (* The $H directive controls the meaning of the reserved word string when
\r
442 used alone in a type declaration. The generic type string can represent
\r
443 either a long, dynamically-allocated string (the fundamental type AnsiString)
\r
444 or a short, statically-allocated string (the fundamental type ShortString).
\r
446 By default {$H+}, Delphi defines the generic string type to be the long
\r
447 AnsiString. All components in the Visual Component Library are compiled
\r
448 in this state. If you write components, they should also use long strings,
\r
449 as should any code that receives data from VCL string-type properties.
\r
451 The {$H-} state is mostly useful for using code from versions of Object
\r
452 Pascal that used short strings by default. You can locally override the
\r
453 meaning of string-type definitions to ensure generation of short strings.
\r
454 You can also change declarations of short string types to string[255] or
\r
455 ShortString, which are unambiguous and independent of the $H setting. *)
\r
458 (* The $J directive controls whether typed constants can be modified or not.
\r
459 In the {$J+} state, typed constants can be modified, and are in essence
\r
460 initialized variables. In the {$J-} state, typed constants are truly
\r
461 constant, and any attempt to modify a typed constant causes the compiler
\r
462 to report an error. *)
\r
465 (* The $T directive controls the types of pointer values generated by the
\r
466 @ operator and the compatibility of pointer types.
\r
468 In the {$T-} state, the result of the @ operator is always an untyped
\r
469 pointer (Pointer) that is compatible with all other pointer types.
\r
470 When @ is applied to a variable reference in the {$T+} state, the result
\r
471 is a typed pointer that is compatible only with Pointer and with other
\r
472 pointers to the type of the variable. *)
\r
474 {$IFDEF COMPILER_7_UP}
\r
475 {$WARN UNSAFE_CAST OFF}
\r
476 {$WARN UNSAFE_CODE OFF}
\r
477 {$WARN UNSAFE_TYPE OFF}
\r
479 (* Disables .NET warnings for Delphi 7 and later. *)
\r
482 (* The $X directive enables or disables Delphi's extended syntax. *)
\r