diff --git a/Project2.dproj b/Project2.dproj
index f1c8657..18ddf2a 100644
--- a/Project2.dproj
+++ b/Project2.dproj
@@ -6,8 +6,8 @@
Project2.dpr
True
Debug
- Win32
- 1
+ Win64
+ 3
Application
@@ -60,6 +60,11 @@
Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ 1033
+ CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=
+ true
+ $(BDS)\bin\default_app.manifest
vquery200;IndyProtocols200;pgprovider200;FireDACSqliteDriver;DBXSqliteDriver;FireDACPgDriver;accessprovider200;fmx;uniGUI20Core;TeeDB;tethering;vclib;DBXInterBaseDriver;mongoprovider200;DbxCommonDriver;crcontrols200;vclimg;dbxcds;IndySystem200;dbfprovider200;tdsprovider200;vcldb;vcldsnap;liteprovider200;uniGUI20VCL;odbcprovider200;fmxFireDAC;dacvcl200;CustomIPTransport;JvCore;RVDBPkgDXE6;vclribbon;adsprovider200;dsnap;fmxase;vcl;dacfmx200;oraprovider200;CloudService;FmxTeeUI;FireDACIBDriver;soapserver;inetdbxpress;dsnapxml;uSynEdit_R2016;adortl;FireDACASADriver;aseprovider200;AviPack;uniTools20;bindcompfmx;FireDACODBCDriver;RESTBackendComponents;rtl;dbrtl;DbxClientDriver;DSPack_DXE2;FireDACCommon;bindcomp;inetdb;IndyCore200;dac200;uniGUI20;Tee;vclFireDAC;xmlrtl;ibxpress;uniGUI20m;DBXMySQLDriver;FireDACCommonDriver;bindcompdbx;soaprtl;bindengine;vclactnband;FMXTee;TeeUI;bindcompvcl;ibprovider200;db2provider200;unidacvcl200;vclie;unidacfmx200;FireDACADSDriver;vcltouch;unidac200;myprovider200;PngComponents;uIndy20;VclSmp;FireDAC;VCLRESTComponents;CoolTrayIconD16;Intraweb;dsnapcon;uniGUI20Chart;inet;fmxobj;FireDACMySQLDriver;soapmidas;vclx;fmxdae;RESTComponents;FireDACMSAccDriver;dbexpress;SpTBXLib;JvBDE;$(DCC_UsePackage)
@@ -111,7 +116,7 @@
True
- False
+ True
12
diff --git a/Project2.res b/Project2.res
index d6cf632..0f3facb 100644
Binary files a/Project2.res and b/Project2.res differ
diff --git a/README.md b/README.md
index 5dccda3..4873240 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,8 @@
# SynHTTP
The synapse HTTP(s) Server, compitible wtih Delphi and FPC, Windows and Linux. Production ready
+
+How to test it. Compile demo app, strart, puch a button. The Server should start on the 8080 port.
+Type in the any browser: http://127.0.0.1:8080/?Ping=Ping
+The server should answer: Pong
+Also you could enable SSL mode and open client with https protocol:
+https://127.0.0.1:8080/?Ping=Ping
\ No newline at end of file
diff --git a/SynSrv.pas b/SynSrv.pas
index 612a80c..b675a72 100644
--- a/SynSrv.pas
+++ b/SynSrv.pas
@@ -71,7 +71,7 @@ TSynTcpSrvConnection = class(TThread)
TCommandHandler = procedure(Connection: TSynTcpSrvConnection; Command: string) of object;
// TSynTcpServer - Generic TCP server component
- [ComponentPlatformsAttribute(pidAllPlatforms)]
+ [ComponentPlatformsAttribute(pidWin32 or pidWin64)]
TSynTcpServer = class(TComponent)
protected
FActive: boolean;
diff --git a/Unit2.dfm b/Unit2.dfm
index 3dfdbd6..1dc3ad8 100644
--- a/Unit2.dfm
+++ b/Unit2.dfm
@@ -14,12 +14,21 @@ object Form2: TForm2
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
- Left = 208
- Top = 96
+ Left = 16
+ Top = 56
Width = 75
Height = 25
- Caption = 'Button1'
+ Caption = 'Start server'
TabOrder = 0
OnClick = Button1Click
end
+ object CheckBox1: TCheckBox
+ Left = 16
+ Top = 24
+ Width = 97
+ Height = 17
+ Caption = 'Enable SSL mode'
+ TabOrder = 1
+ OnClick = CheckBox1Click
+ end
end
diff --git a/Unit2.pas b/Unit2.pas
index fc83cf3..cc84d4a 100644
--- a/Unit2.pas
+++ b/Unit2.pas
@@ -3,13 +3,27 @@
interface
uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, SynHttpSrv, Vcl.StdCtrls, SynSrv;
+ Winapi.Windows,
+ Winapi.Messages,
+ System.SysUtils,
+ System.Variants,
+ System.Classes,
+ Vcl.Graphics,
+ Vcl.Controls,
+ Vcl.Forms,
+ Vcl.Dialogs,
+ SynHttpSrv,
+ ssl_openssl_lib,
+ ssl_openssl,
+ Vcl.StdCtrls,
+ SynSrv;
type
TForm2 = class(TForm)
- Button1: TButton;
+ Button1: TButton;
+ CheckBox1: TCheckBox;
procedure Button1Click(Sender: TObject);
+ procedure CheckBox1Click(Sender: TObject);
private
FSynHttpServer: TSynHttpServer;
{ Private declarations }
@@ -49,7 +63,22 @@ procedure TForm2.Button1Click(Sender: TObject);
FSynHttpServer := TSynHttpServer.Create(Self);
FSynHttpServer.OnHttpGet := SynHttpServer1HttpGet;
FSynHttpServer.Port := '8080';
+ FSynHttpServer.HTTPSEnabled := CheckBox1.Checked;
TryToOpenWebPort;
+ if FSynHttpServer.Active then
+ FSynHttpServer.InitHttps('server.crt', 'server.key', 'w1z2rd', '');
+end;
+
+procedure TForm2.CheckBox1Click(Sender: TObject);
+begin
+ if CheckBox1.Checked then
+ if InitSSLInterface then
+ ShowMessage('SSL initialized')
+ else
+ begin
+ ShowMessage('SSL does not initialized');
+ CheckBox1.Checked := False;
+ end;
end;
procedure TForm2.SynHttpServer1HttpGet(Sender: TObject; Connection: TSynTcpSrvConnection;
diff --git a/blcksock.pas b/blcksock.pas
index e658464..99011d4 100644
--- a/blcksock.pas
+++ b/blcksock.pas
@@ -323,9 +323,9 @@ TBlockSocket = class(TObject)
FNonBlockMode: Boolean;
FMaxLineLength: Integer;
FMaxSendBandwidth: Integer;
- FNextSend: FixedUInt;
+ FNextSend: UInt32;
FMaxRecvBandwidth: Integer;
- FNextRecv: FixedUInt;
+ FNextRecv: UInt32;
FConvertLineEnd: Boolean;
FLastCR: Boolean;
FLastLF: Boolean;
@@ -377,7 +377,7 @@ TBlockSocket = class(TObject)
procedure DoMonitor(Writing: Boolean; const Buffer: TMemory; Len: Integer);
procedure DoCreateSocket;
procedure DoHeartbeat;
- procedure LimitBandwidth(Length: Integer; MaxB: integer; var Next: FixedUInt);
+ procedure LimitBandwidth(Length: Integer; MaxB: integer; var Next: UInt32);
procedure SetBandwidth(Value: Integer);
function TestStopFlag: Boolean;
procedure InternalSendStream(const Stream: TStream; WithSize, Indy: boolean); virtual;
@@ -1509,9 +1509,9 @@ TIPHeader = record
TTL: Byte;
Protocol: Byte;
CheckSum: Word;
- SourceIp: FixedUInt;
- DestIp: FixedUInt;
- Options: FixedUInt;
+ SourceIp: UInt32;
+ DestIp: UInt32;
+ Options: UInt32;
end;
{:@abstract(Parent class of application protocol implementations.)
@@ -1858,7 +1858,8 @@ procedure TBlockSocket.DelayedOption(const Value: TSynaOption);
begin
if FSocket = INVALID_SOCKET then
begin
- FDelayedOptions := FDelayedOptions + [Value];
+ SetLength(FDelayedOptions, Length(FDelayedOptions) + 1);
+ FDelayedOptions[High(FDelayedOptions)] := Value;
end
else
SetDelayedOption(Value);
@@ -2112,10 +2113,10 @@ procedure TBlockSocket.SetBandwidth(Value: Integer);
MaxRecvBandwidth := Value;
end;
-procedure TBlockSocket.LimitBandwidth(Length: Integer; MaxB: integer; var Next: FixedUInt);
+procedure TBlockSocket.LimitBandwidth(Length: Integer; MaxB: integer; var Next: UInt32);
var
- x: FixedUInt;
- y: FixedUInt;
+ x: UInt32;
+ y: UInt32;
n: integer;
begin
if FStopFlag then
@@ -2355,7 +2356,7 @@ function TBlockSocket.RecvBufferEx(Buffer: TMemory; Len: Integer;
var
s: TSynaBytes;
rl, l: integer;
- ti: FixedUInt;
+ ti: UInt32;
{$IFDEF CIL}
n: integer;
b: TMemory;
@@ -2528,7 +2529,7 @@ function TBlockSocket.RecvTerminated(Timeout: Integer; const Terminator: string)
CorCRLF: Boolean;
t: string;
tl: integer;
- ti: FixedUInt;
+ ti: UInt32;
begin
ResetLastError;
Result := '';
diff --git a/jedi.inc b/jedi.inc
new file mode 100644
index 0000000..3248b1b
--- /dev/null
+++ b/jedi.inc
@@ -0,0 +1,2012 @@
+{$IFNDEF JEDI_INC}
+{$DEFINE JEDI_INC}
+
+{**************************************************************************************************}
+{ }
+{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License");}
+{ you may not use this file except in compliance with the License. You may obtain a copy of the }
+{ License at http://www.mozilla.org/MPL/ }
+{ }
+{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF }
+{ ANY KIND, either express or implied. See the License for the specific language governing rights }
+{ and limitations under the License. }
+{ }
+{ The Original Code is: jedi.inc. }
+{ The Initial Developer of the Original Code is Project JEDI http://www.delphi-jedi.org }
+{ }
+{ Alternatively, the contents of this file may be used under the terms of the GNU Lesser General }
+{ Public License (the "LGPL License"), in which case the provisions of the LGPL License are }
+{ applicable instead of those above. If you wish to allow use of your version of this file only }
+{ under the terms of the LGPL License and not to allow others to use your version of this file }
+{ under the MPL, indicate your decision by deleting the provisions above and replace them with }
+{ the notice and other provisions required by the LGPL License. If you do not delete the }
+{ provisions above, a recipient may use your version of this file under either the MPL or the }
+{ LGPL License. }
+{ }
+{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
+{ }
+{**************************************************************************************************}
+{ }
+{ This file defines various generic compiler directives used in different libraries, e.g. in the }
+{ JEDI Code Library (JCL) and JEDI Visual Component Library Library (JVCL). The directives in }
+{ this file are of generic nature and consist mostly of mappings from the VERXXX directives }
+{ defined by Delphi, C++Builder and FPC to friendly names such as DELPHI5 and }
+{ SUPPORTS_WIDESTRING. These friendly names are subsequently used in the libraries to test for }
+{ compiler versions and/or whether the compiler supports certain features (such as widestrings or }
+{ 64 bit integers. The libraries provide an additional, library specific, include file. For the }
+{ JCL e.g. this is jcl.inc. These files should be included in source files instead of this file }
+{ (which is pulled in automatically). }
+{ }
+{**************************************************************************************************}
+{ }
+{ Last modified: $Date:: $ }
+{ Revision: $Rev:: $ }
+{ Author: $Author:: $ }
+{ }
+{**************************************************************************************************}
+
+(*
+
+- Development environment directives
+
+ This file defines two directives to indicate which development environment the
+ library is being compiled with. Currently this can either be Delphi, Kylix,
+ C++Builder or FPC.
+
+ Directive Description
+ ------------------------------------------------------------------------------
+ DELPHI Defined if compiled with Delphi
+ KYLIX Defined if compiled with Kylix
+ DELPHICOMPILER Defined if compiled with Delphi or Kylix/Delphi
+ BCB Defined if compiled with C++Builder
+ CPPBUILDER Defined if compiled with C++Builder (alias for BCB)
+ BCBCOMPILER Defined if compiled with C++Builder or Kylix/C++
+ DELPHILANGUAGE Defined if compiled with Delphi, Kylix or C++Builder
+ BORLAND Defined if compiled with Delphi, Kylix or C++Builder
+ FPC Defined if compiled with FPC
+
+- Platform Directives
+
+ Platform directives are not all explicitly defined in this file, some are
+ defined by the compiler itself. They are listed here only for completeness.
+
+ Directive Description
+ ------------------------------------------------------------------------------
+ WIN32 Defined when target platform is 32 bit Windows
+ WIN64 Defined when target platform is 64 bit Windows
+ MSWINDOWS Defined when target platform is 32 bit Windows
+ LINUX Defined when target platform is Linux
+ UNIX Defined when target platform is Unix-like (including Linux)
+ CLR Defined when target platform is .NET
+
+- Architecture directives. These are auto-defined by FPC
+ CPU32 and CPU64 are mostly for generic pointer size dependant differences rather
+ than for a specific architecture.
+
+ CPU386 Defined when target platform is native x86 (win32)
+ CPUx86_64 Defined when target platform is native x86_64 (win64)
+ CPU32 Defined when target is 32-bit
+ CPU64 Defined when target is 64-bit
+ CPUASM Defined when target assembler is available
+
+- Visual library Directives
+
+ The following directives indicate for a visual library. In a Delphi/BCB
+ (Win32) application you need to define the VisualCLX symbol in the project
+ options, if you want to use the VisualCLX library. Alternatively you can use
+ the IDE expert, which is distributed with the JCL to do this automatically.
+
+ Directive Description
+ ------------------------------------------------------------------------------
+ VCL Defined for Delphi/BCB (Win32) exactly if VisualCLX is not defined
+ VisualCLX Defined for Kylix; needs to be defined for Delphi/BCB to
+ use JCL with VisualCLX applications.
+
+
+- Other cross-platform related defines
+
+ These symbols are intended to help in writing portable code.
+
+ Directive Description
+ ------------------------------------------------------------------------------
+ PUREPASCAL Code is machine-independent (as opposed to assembler code)
+ Win32API Code is specific for the Win32 API;
+ use instead of "{$IFNDEF CLR} {$IFDEF MSWINDOWS}" constructs
+
+
+- Delphi Versions
+
+ The following directives are direct mappings from the VERXXX directives to a
+ friendly name of the associated compiler. These directives are only defined if
+ the compiler is Delphi (ie DELPHI is defined).
+
+ Directive Description
+ ------------------------------------------------------------------------------
+ DELPHI1 Defined when compiling with Delphi 1 (Codename WASABI/MANGO)
+ DELPHI2 Defined when compiling with Delphi 2 (Codename POLARIS)
+ DELPHI3 Defined when compiling with Delphi 3 (Codename IVORY)
+ DELPHI4 Defined when compiling with Delphi 4 (Codename ALLEGRO)
+ DELPHI5 Defined when compiling with Delphi 5 (Codename ARGUS)
+ DELPHI6 Defined when compiling with Delphi 6 (Codename ILLIAD)
+ DELPHI7 Defined when compiling with Delphi 7 (Codename AURORA)
+ DELPHI8 Defined when compiling with Delphi 8 (Codename OCTANE)
+ DELPHI2005 Defined when compiling with Delphi 2005 (Codename DIAMONDBACK)
+ DELPHI9 Alias for DELPHI2005
+ DELPHI10 Defined when compiling with Delphi 2006 (Codename DEXTER)
+ DELPHI2006 Alias for DELPHI10
+ DELPHI11 Defined when compiling with Delphi 2007 for Win32 (Codename SPACELY)
+ DELPHI2007 Alias for DELPHI11
+ DELPHI12 Defined when compiling with Delphi 2009 for Win32 (Codename TIBURON)
+ DELPHI2009 Alias for DELPHI12
+ DELPHI14 Defined when compiling with Delphi 2010 for Win32 (Codename WEAVER)
+ DELPHI2010 Alias for DELPHI14
+ DELPHI15 Defined when compiling with Delphi XE for Win32 (Codename FULCRUM)
+ DELPHIXE Alias for DELPHI15
+ DELPHI16 Defined when compiling with Delphi XE2 for Win32 (Codename PULSAR)
+ DELPHIXE2 Alias for DELPHI16
+ DELPHI17 Defined when compiling with Delphi XE3 for Win32 (Codename WATERDRAGON)
+ DELPHIXE3 Alias for DELPHI17
+ DELPHI18 Defined when compiling with Delphi XE4 for Win32 (Codename QUINTESSENCE)
+ DELPHIXE4 Alias for DELPHI18
+ DELPHI19 Defined when compiling with Delphi XE5 for Win32 (Codename ZEPHYR)
+ DELPHIXE5 Alias for DELPHI19
+ DELPHI20 Defined when compiling with Delphi XE6 for Win32 (Codename PROTEUS)
+ DELPHIXE6 Alias for DELPHI20
+ DELPHI21 Defined when compiling with Delphi XE7 for Win32 (Codename CARPATHIA)
+ DELPHIXE7 Alias for DELPHI21
+ DELPHI22 Defined when compiling with Delphi XE8 for Win32 (Codename ELBRUS)
+ DELPHIXE8 Alias for DELPHI22
+ DELPHI23 Defined when compiling with Delphi 10 for Win32 (Codename AITANA)
+ DELPHIX_SEATTLE Alias for DELPHI23
+ DELPHI24 Defined when compiling with Delphi 10.1 for Win32 (Codename BIGBEN)
+ DELPHIX_BERLIN Alias for DELPHI24
+ DELPHI25 Defined when compiling with Delphi 10.2 for Win32 (Codename GODZILLA)
+ DELPHIX_TOKYO Alias for DELPHI25
+ DELPHI26 Defined when compiling with Delphi 10.3 for Win32 (Codename CARNIVAL)
+ DELPHIX_RIO Alias for DELPHI26
+ DELPHI1_UP Defined when compiling with Delphi 1 or higher
+ DELPHI2_UP Defined when compiling with Delphi 2 or higher
+ DELPHI3_UP Defined when compiling with Delphi 3 or higher
+ DELPHI4_UP Defined when compiling with Delphi 4 or higher
+ DELPHI5_UP Defined when compiling with Delphi 5 or higher
+ DELPHI6_UP Defined when compiling with Delphi 6 or higher
+ DELPHI7_UP Defined when compiling with Delphi 7 or higher
+ DELPHI8_UP Defined when compiling with Delphi 8 or higher
+ DELPHI2005_UP Defined when compiling with Delphi 2005 or higher
+ DELPHI9_UP Alias for DELPHI2005_UP
+ DELPHI10_UP Defined when compiling with Delphi 2006 or higher
+ DELPHI2006_UP Alias for DELPHI10_UP
+ DELPHI11_UP Defined when compiling with Delphi 2007 for Win32 or higher
+ DELPHI2007_UP Alias for DELPHI11_UP
+ DELPHI12_UP Defined when compiling with Delphi 2009 for Win32 or higher
+ DELPHI2009_UP Alias for DELPHI12_UP
+ DELPHI14_UP Defined when compiling with Delphi 2010 for Win32 or higher
+ DELPHI2010_UP Alias for DELPHI14_UP
+ DELPHI15_UP Defined when compiling with Delphi XE for Win32 or higher
+ DELPHIXE_UP Alias for DELPHI15_UP
+ DELPHI16_UP Defined when compiling with Delphi XE2 for Win32 or higher
+ DELPHIXE2_UP Alias for DELPHI16_UP
+ DELPHI17_UP Defined when compiling with Delphi XE3 for Win32 or higher
+ DELPHIXE3_UP Alias for DELPHI17_UP
+ DELPHI18_UP Defined when compiling with Delphi XE4 for Win32 or higher
+ DELPHIXE4_UP Alias for DELPHI18_UP
+ DELPHI19_UP Defined when compiling with Delphi XE5 for Win32 or higher
+ DELPHIXE5_UP Alias for DELPHI19_UP
+ DELPHI20_UP Defined when compiling with Delphi XE6 for Win32 or higher
+ DELPHIXE6_UP Alias for DELPHI20_UP
+ DELPHI21_UP Defined when compiling with Delphi XE7 for Win32 or higher
+ DELPHIXE7_UP Alias for DELPHI21_UP
+ DELPHI22_UP Defined when compiling with Delphi XE8 for Win32 or higher
+ DELPHIXE8_UP Alias for DELPHI22_UP
+ DELPHI23_UP Defined when compiling with Delphi 10 for Win32 or higher
+ DELPHIX_SEATTLE_UP Alias for DELPHI23_UP
+ DELPHI24_UP Defined when compiling with Delphi 10.1 for Win32 or higher
+ DELPHIX_BERLIN_UP Alias for DELPHI24_UP
+ DELPHI25_UP Defined when compiling with Delphi 10.2 for Win32 or higher
+ DELPHIX_TOKYO_UP Alias for DELPHI25_UP
+ DELPHI26_UP Defined when compiling with Delphi 10.3 for Win32 or higher
+ DELPHIX_RIO_UP Alias for DELPHI26_UP
+ DELPHI27_UP Defined when compiling with Delphi 10.4 for Win32 or higher
+
+
+- Kylix Versions
+
+ The following directives are direct mappings from the VERXXX directives to a
+ friendly name of the associated compiler. These directives are only defined if
+ the compiler is Kylix (ie KYLIX is defined).
+
+ Directive Description
+ ------------------------------------------------------------------------------
+ KYLIX1 Defined when compiling with Kylix 1
+ KYLIX2 Defined when compiling with Kylix 2
+ KYLIX3 Defined when compiling with Kylix 3 (Codename CORTEZ)
+ KYLIX1_UP Defined when compiling with Kylix 1 or higher
+ KYLIX2_UP Defined when compiling with Kylix 2 or higher
+ KYLIX3_UP Defined when compiling with Kylix 3 or higher
+
+
+- Delphi Compiler Versions (Delphi / Kylix, not in BCB mode)
+
+ Directive Description
+ ------------------------------------------------------------------------------
+ DELPHICOMPILER1 Defined when compiling with Delphi 1
+ DELPHICOMPILER2 Defined when compiling with Delphi 2
+ DELPHICOMPILER3 Defined when compiling with Delphi 3
+ DELPHICOMPILER4 Defined when compiling with Delphi 4
+ DELPHICOMPILER5 Defined when compiling with Delphi 5
+ DELPHICOMPILER6 Defined when compiling with Delphi 6 or Kylix 1, 2 or 3
+ DELPHICOMPILER7 Defined when compiling with Delphi 7
+ DELPHICOMPILER8 Defined when compiling with Delphi 8
+ DELPHICOMPILER9 Defined when compiling with Delphi 2005
+ DELPHICOMPILER10 Defined when compiling with Delphi Personality of BDS 4.0
+ DELPHICOMPILER11 Defined when compiling with Delphi 2007 for Win32
+ DELPHICOMPILER12 Defined when compiling with Delphi Personality of BDS 6.0
+ DELPHICOMPILER14 Defined when compiling with Delphi Personality of BDS 7.0
+ DELPHICOMPILER15 Defined when compiling with Delphi Personality of BDS 8.0
+ DELPHICOMPILER16 Defined when compiling with Delphi Personality of BDS 9.0
+ DELPHICOMPILER17 Defined when compiling with Delphi Personality of BDS 10.0
+ DELPHICOMPILER18 Defined when compiling with Delphi Personality of BDS 11.0
+ DELPHICOMPILER19 Defined when compiling with Delphi Personality of BDS 12.0
+ DELPHICOMPILER20 Defined when compiling with Delphi Personality of BDS 14.0
+ DELPHICOMPILER21 Defined when compiling with Delphi Personality of BDS 15.0
+ DELPHICOMPILER22 Defined when compiling with Delphi Personality of BDS 16.0
+ DELPHICOMPILER23 Defined when compiling with Delphi Personality of BDS 17.0
+ DELPHICOMPILER24 Defined when compiling with Delphi Personality of BDS 18.0
+ DELPHICOMPILER25 Defined when compiling with Delphi Personality of BDS 19.0
+ DELPHICOMPILER26 Defined when compiling with Delphi Personality of BDS 20.0
+ DELPHICOMPILER27 Defined when compiling with Delphi Personality of BDS 21.0
+ DELPHICOMPILER1_UP Defined when compiling with Delphi 1 or higher
+ DELPHICOMPILER2_UP Defined when compiling with Delphi 2 or higher
+ DELPHICOMPILER3_UP Defined when compiling with Delphi 3 or higher
+ DELPHICOMPILER4_UP Defined when compiling with Delphi 4 or higher
+ DELPHICOMPILER5_UP Defined when compiling with Delphi 5 or higher
+ DELPHICOMPILER6_UP Defined when compiling with Delphi 6 or Kylix 1, 2 or 3 or higher
+ DELPHICOMPILER7_UP Defined when compiling with Delphi 7 or higher
+ DELPHICOMPILER8_UP Defined when compiling with Delphi 8 or higher
+ DELPHICOMPILER9_UP Defined when compiling with Delphi 2005
+ DELPHICOMPILER10_UP Defined when compiling with Delphi 2006 or higher
+ DELPHICOMPILER11_UP Defined when compiling with Delphi 2007 for Win32 or higher
+ DELPHICOMPILER12_UP Defined when compiling with Delphi 2009 for Win32 or higher
+ DELPHICOMPILER14_UP Defined when compiling with Delphi 2010 for Win32 or higher
+ DELPHICOMPILER15_UP Defined when compiling with Delphi XE for Win32 or higher
+ DELPHICOMPILER16_UP Defined when compiling with Delphi XE2 for Win32 or higher
+ DELPHICOMPILER17_UP Defined when compiling with Delphi XE3 for Win32 or higher
+ DELPHICOMPILER18_UP Defined when compiling with Delphi XE4 for Win32 or higher
+ DELPHICOMPILER19_UP Defined when compiling with Delphi XE5 for Win32 or higher
+ DELPHICOMPILER20_UP Defined when compiling with Delphi XE6 for Win32 or higher
+ DELPHICOMPILER21_UP Defined when compiling with Delphi XE7 for Win32 or higher
+ DELPHICOMPILER22_UP Defined when compiling with Delphi XE8 for Win32 or higher
+ DELPHICOMPILER23_UP Defined when compiling with Delphi 10 for Win32 or higher
+ DELPHICOMPILER24_UP Defined when compiling with Delphi 10.1 for Win32 or higher
+ DELPHICOMPILER25_UP Defined when compiling with Delphi 10.2 for Win32 or higher
+ DELPHICOMPILER26_UP Defined when compiling with Delphi 10.3 for Win32 or higher
+ DELPHICOMPILER27_UP Defined when compiling with Delphi 10.4 for Win32 or higher
+
+
+- C++Builder Versions
+
+ The following directives are direct mappings from the VERXXX directives to a
+ friendly name of the associated compiler. These directives are only defined if
+ the compiler is C++Builder (ie BCB is defined).
+
+ Directive Description
+ ------------------------------------------------------------------------------
+ BCB1 Defined when compiling with C++Builder 1
+ BCB3 Defined when compiling with C++Builder 3
+ BCB4 Defined when compiling with C++Builder 4
+ BCB5 Defined when compiling with C++Builder 5 (Codename RAMPAGE)
+ BCB6 Defined when compiling with C++Builder 6 (Codename RIPTIDE)
+ BCB10 Defined when compiling with C++Builder Personality of BDS 4.0 (also known as C++Builder 2006) (Codename DEXTER)
+ BCB11 Defined when compiling with C++Builder Personality of RAD Studio 2007 (also known as C++Builder 2007) (Codename COGSWELL)
+ BCB12 Defined when compiling with C++Builder Personality of RAD Studio 2009 (also known as C++Builder 2009) (Codename TIBURON)
+ BCB14 Defined when compiling with C++Builder Personality of RAD Studio 2010 (also known as C++Builder 2010) (Codename WEAVER)
+ BCB15 Defined when compiling with C++Builder Personality of RAD Studio XE (also known as C++Builder XE) (Codename FULCRUM)
+ BCB16 Defined when compiling with C++Builder Personality of RAD Studio XE2 (also known as C++Builder XE2) (Codename PULSAR)
+ BCB17 Defined when compiling with C++Builder Personality of RAD Studio XE3 (also known as C++Builder XE3) (Codename WATERDRAGON)
+ BCB18 Defined when compiling with C++Builder Personality of RAD Studio XE4 (also known as C++Builder XE4) (Codename QUINTESSENCE)
+ BCB19 Defined when compiling with C++Builder Personality of RAD Studio XE5 (also known as C++Builder XE5) (Codename ZEPHYR)
+ BCB20 Defined when compiling with C++Builder Personality of RAD Studio XE6 (also known as C++Builder XE6) (Codename PROTEUS)
+ BCB21 Defined when compiling with C++Builder Personality of RAD Studio XE7 (also known as C++Builder XE7) (Codename CARPATHIA)
+ BCB22 Defined when compiling with C++Builder Personality of RAD Studio XE8 (also known as C++Builder XE8) (Codename ELBRUS)
+ BCB23 Defined when compiling with C++Builder Personality of RAD Studio 10 Seattle (also known as C++Builder 10 Seattle) (Codename AITANA)
+ BCB24 Defined when compiling with C++Builder Personality of RAD Studio 10.1 Berlin (also known as C++Builder 10.1 Berlin) (Codename BIGBEN)
+ BCB25 Defined when compiling with C++Builder Personality of RAD Studio 10.2 Tokyo (also known as C++Builder 10.2 Tokyo) (Codename GODZILLA)
+ BCB26 Defined when compiling with C++Builder Personality of RAD Studio 10.3 Rio (also known as C++Builder 10.3) (Codename CARNIVAL)
+ BCB27 Defined when compiling with C++Builder Personality of RAD Studio 10.4 Rio (also known as C++Builder 10.4) (Codename DENALI)
+ BCB1_UP Defined when compiling with C++Builder 1 or higher
+ BCB3_UP Defined when compiling with C++Builder 3 or higher
+ BCB4_UP Defined when compiling with C++Builder 4 or higher
+ BCB5_UP Defined when compiling with C++Builder 5 or higher
+ BCB6_UP Defined when compiling with C++Builder 6 or higher
+ BCB10_UP Defined when compiling with C++Builder Personality of BDS 4.0 or higher
+ BCB11_UP Defined when compiling with C++Builder Personality of RAD Studio 2007 or higher
+ BCB12_UP Defined when compiling with C++Builder Personality of RAD Studio 2009 or higher
+ BCB14_UP Defined when compiling with C++Builder Personality of RAD Studio 2010 or higher
+ BCB15_UP Defined when compiling with C++Builder Personality of RAD Studio XE or higher
+ BCB16_UP Defined when compiling with C++Builder Personality of RAD Studio XE2 or higher
+ BCB17_UP Defined when compiling with C++Builder Personality of RAD Studio XE3 or higher
+ BCB18_UP Defined when compiling with C++Builder Personality of RAD Studio XE4 or higher
+ BCB19_UP Defined when compiling with C++Builder Personality of RAD Studio XE5 or higher
+ BCB20_UP Defined when compiling with C++Builder Personality of RAD Studio XE6 or higher
+ BCB21_UP Defined when compiling with C++Builder Personality of RAD Studio XE7 or higher
+ BCB22_UP Defined when compiling with C++Builder Personality of RAD Studio XE8 or higher
+ BCB23_UP Defined when compiling with C++Builder Personality of RAD Studio 10 or higher
+ BCB24_UP Defined when compiling with C++Builder Personality of RAD Studio 10.1 or higher
+ BCB25_UP Defined when compiling with C++Builder Personality of RAD Studio 10.2 or higher
+ BCB26_UP Defined when compiling with C++Builder Personality of RAD Studio 10.3 or higher
+ BCB27_UP Defined when compiling with C++Builder Personality of RAD Studio 10.4 or higher
+
+
+- RAD Studio / Borland Developer Studio Versions
+
+ The following directives are direct mappings from the VERXXX directives to a
+ friendly name of the associated IDE. These directives are only defined if
+ the IDE is Borland Developer Studio Version 2 or above.
+
+ Note: Borland Developer Studio 2006 is marketed as Delphi 2006 or C++Builder 2006,
+ but those provide only different labels for identical content.
+
+ Directive Description
+ ------------------------------------------------------------------------------
+ BDS Defined when compiling with BDS version of dcc32.exe (Codename SIDEWINDER)
+ BDS2 Defined when compiling with BDS 2.0 (Delphi 8) (Codename OCTANE)
+ BDS3 Defined when compiling with BDS 3.0 (Delphi 2005) (Codename DIAMONDBACK)
+ BDS4 Defined when compiling with BDS 4.0 (Borland Developer Studio 2006) (Codename DEXTER)
+ BDS5 Defined when compiling with BDS 5.0 (CodeGear RAD Studio 2007) (Codename HIGHLANDER)
+ BDS6 Defined when compiling with BDS 6.0 (CodeGear RAD Studio 2009) (Codename TIBURON)
+ BDS7 Defined when compiling with BDS 7.0 (Embarcadero RAD Studio 2010) (Codename WEAVER)
+ BDS8 Defined when compiling with BDS 8.0 (Embarcadero RAD Studio XE) (Codename FULCRUM)
+ BDS9 Defined when compiling with BDS 9.0 (Embarcadero RAD Studio XE2) (Codename PULSAR)
+ BDS10 Defined when compiling with BDS 10.0 (Embarcadero RAD Studio XE3) (Codename WATERDRAGON)
+ BDS11 Defined when compiling with BDS 11.0 (Embarcadero RAD Studio XE4) (Codename QUINTESSENCE)
+ BDS12 Defined when compiling with BDS 12.0 (Embarcadero RAD Studio XE5) (Codename ZEPHYR)
+ BDS14 Defined when compiling with BDS 14.0 (Embarcadero RAD Studio XE6) (Codename PROTEUS)
+ BDS15 Defined when compiling with BDS 15.0 (Embarcadero RAD Studio XE7) (Codename CARPATHIA)
+ BDS16 Defined when compiling with BDS 16.0 (Embarcadero RAD Studio XE8) (Codename ELBRUS)
+ BDS17 Defined when compiling with BDS 17.0 (Embarcadero RAD Studio 10) (Codename AITANA)
+ BDS18 Defined when compiling with BDS 18.0 (Embarcadero RAD Studio 10.1) (Codename BIGBEN)
+ BDS19 Defined when compiling with BDS 19.0 (Embarcadero RAD Studio 10.2) (Codename GODZILLA)
+ BDS20 Defined when compiling with BDS 20.0 (Embarcadero RAD Studio 10.3) (Codename CARNIVAL)
+ BDS21 Defined when compiling with BDS 21.0 (Embarcadero RAD Studio 10.4) (Codename DENALI)
+ BDS2_UP Defined when compiling with BDS 2.0 or higher
+ BDS3_UP Defined when compiling with BDS 3.0 or higher
+ BDS4_UP Defined when compiling with BDS 4.0 or higher
+ BDS5_UP Defined when compiling with BDS 5.0 or higher
+ BDS6_UP Defined when compiling with BDS 6.0 or higher
+ BDS7_UP Defined when compiling with BDS 7.0 or higher
+ BDS8_UP Defined when compiling with BDS 8.0 or higher
+ BDS9_UP Defined when compiling with BDS 9.0 or higher
+ BDS10_UP Defined when compiling with BDS 10.0 or higher
+ BDS11_UP Defined when compiling with BDS 11.0 or higher
+ BDS12_UP Defined when compiling with BDS 12.0 or higher
+ BDS14_UP Defined when compiling with BDS 14.0 or higher
+ BDS15_UP Defined when compiling with BDS 15.0 or higher
+ BDS16_UP Defined when compiling with BDS 16.0 or higher
+ BDS17_UP Defined when compiling with BDS 17.0 or higher
+ BDS18_UP Defined when compiling with BDS 18.0 or higher
+ BDS19_UP Defined when compiling with BDS 19.0 or higher
+ BDS20_UP Defined when compiling with BDS 20.0 or higher
+ BDS21_UP Defined when compiling with BDS 21.0 or higher
+
+- Compiler Versions
+
+ The following directives are direct mappings from the VERXXX directives to a
+ friendly name of the associated compiler. Unlike the DELPHI_X and BCB_X
+ directives, these directives are indepedent of the development environment.
+ That is, they are defined regardless of whether compilation takes place using
+ Delphi or C++Builder.
+
+ Directive Description
+ ------------------------------------------------------------------------------
+ COMPILER1 Defined when compiling with Delphi 1
+ COMPILER2 Defined when compiling with Delphi 2 or C++Builder 1
+ COMPILER3 Defined when compiling with Delphi 3
+ COMPILER35 Defined when compiling with C++Builder 3
+ COMPILER4 Defined when compiling with Delphi 4 or C++Builder 4
+ COMPILER5 Defined when compiling with Delphi 5 or C++Builder 5
+ COMPILER6 Defined when compiling with Delphi 6 or C++Builder 6
+ COMPILER7 Defined when compiling with Delphi 7
+ COMPILER8 Defined when compiling with Delphi 8
+ COMPILER9 Defined when compiling with Delphi 9
+ COMPILER10 Defined when compiling with Delphi or C++Builder Personalities of BDS 4.0
+ COMPILER11 Defined when compiling with Delphi or C++Builder Personalities of BDS 5.0
+ COMPILER12 Defined when compiling with Delphi or C++Builder Personalities of BDS 6.0
+ COMPILER14 Defined when compiling with Delphi or C++Builder Personalities of BDS 7.0
+ COMPILER15 Defined when compiling with Delphi or C++Builder Personalities of BDS 8.0
+ COMPILER16 Defined when compiling with Delphi or C++Builder Personalities of BDS 9.0
+ COMPILER17 Defined when compiling with Delphi or C++Builder Personalities of BDS 10.0
+ COMPILER18 Defined when compiling with Delphi or C++Builder Personalities of BDS 11.0
+ COMPILER19 Defined when compiling with Delphi or C++Builder Personalities of BDS 12.0
+ COMPILER20 Defined when compiling with Delphi or C++Builder Personalities of BDS 14.0
+ COMPILER21 Defined when compiling with Delphi or C++Builder Personalities of BDS 15.0
+ COMPILER22 Defined when compiling with Delphi or C++Builder Personalities of BDS 16.0
+ COMPILER23 Defined when compiling with Delphi or C++Builder Personalities of BDS 17.0
+ COMPILER24 Defined when compiling with Delphi or C++Builder Personalities of BDS 18.0
+ COMPILER25 Defined when compiling with Delphi or C++Builder Personalities of BDS 19.0
+ COMPILER26 Defined when compiling with Delphi or C++Builder Personalities of BDS 20.0
+ COMPILER27 Defined when compiling with Delphi or C++Builder Personalities of BDS 21.0
+ COMPILER1_UP Defined when compiling with Delphi 1 or higher
+ COMPILER2_UP Defined when compiling with Delphi 2 or C++Builder 1 or higher
+ COMPILER3_UP Defined when compiling with Delphi 3 or higher
+ COMPILER35_UP Defined when compiling with C++Builder 3 or higher
+ COMPILER4_UP Defined when compiling with Delphi 4 or C++Builder 4 or higher
+ COMPILER5_UP Defined when compiling with Delphi 5 or C++Builder 5 or higher
+ COMPILER6_UP Defined when compiling with Delphi 6 or C++Builder 6 or higher
+ COMPILER7_UP Defined when compiling with Delphi 7
+ COMPILER8_UP Defined when compiling with Delphi 8
+ COMPILER9_UP Defined when compiling with Delphi Personalities of BDS 3.0
+ COMPILER10_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 4.0 or higher
+ COMPILER11_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 5.0 or higher
+ COMPILER12_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 6.0 or higher
+ COMPILER14_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 7.0 or higher
+ COMPILER15_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 8.0 or higher
+ COMPILER16_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 9.0 or higher
+ COMPILER17_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 10.0 or higher
+ COMPILER18_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 11.0 or higher
+ COMPILER19_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 12.0 or higher
+ COMPILER20_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 14.0 or higher
+ COMPILER21_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 15.0 or higher
+ COMPILER22_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 16.0 or higher
+ COMPILER23_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 17.0 or higher
+ COMPILER24_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 18.0 or higher
+ COMPILER25_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 19.0 or higher
+ COMPILER26_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 20.0 or higher
+ COMPILER27_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 21.0 or higher
+
+
+- RTL Versions
+
+ Use e.g. following to determine the exact RTL version since version 14.0:
+ {$IFDEF CONDITIONALEXPRESSIONS}
+ {$IF Declared(RTLVersion) and (RTLVersion >= 14.2)}
+ // code for Delphi 6.02 or higher, Kylix 2 or higher, C++Builder 6 or higher
+ ...
+ {$IFEND}
+ {$ENDIF}
+
+ Directive Description
+ ------------------------------------------------------------------------------
+ RTL80_UP Defined when compiling with Delphi 1 or higher
+ RTL90_UP Defined when compiling with Delphi 2 or higher
+ RTL93_UP Defined when compiling with C++Builder 1 or higher
+ RTL100_UP Defined when compiling with Delphi 3 or higher
+ RTL110_UP Defined when compiling with C++Builder 3 or higher
+ RTL120_UP Defined when compiling with Delphi 4 or higher
+ RTL125_UP Defined when compiling with C++Builder 4 or higher
+ RTL130_UP Defined when compiling with Delphi 5 or C++Builder 5 or higher
+ RTL140_UP Defined when compiling with Delphi 6, Kylix 1, 2 or 3 or C++Builder 6 or higher
+ RTL150_UP Defined when compiling with Delphi 7 or higher
+ RTL160_UP Defined when compiling with Delphi 8 or higher
+ RTL170_UP Defined when compiling with Delphi Personalities of BDS 3.0 or higher
+ RTL180_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 4.0 or higher
+ RTL185_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 5.0 or higher
+ RTL190_UP Defined when compiling with Delphi.NET of BDS 5.0 or higher
+ RTL200_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 6.0 or higher
+ RTL210_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 7.0 or higher
+ RTL220_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 8.0 or higher
+ RTL230_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 9.0 or higher
+ RTL240_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 10.0 or higher
+ RTL250_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 11.0 or higher
+ RTL260_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 12.0 or higher
+ RTL270_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 14.0 or higher
+ RTL280_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 15.0 or higher
+ RTL290_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 16.0 or higher
+ RTL300_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 17.0 or higher
+ RTL310_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 18.0 or higher
+ RTL320_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 19.0 or higher
+ RTL330_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 20.0 or higher
+ RTL340_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 21.0 or higher
+
+
+- CLR Versions
+
+ Directive Description
+ ------------------------------------------------------------------------------
+ CLR Defined when compiling for .NET
+ CLR10 Defined when compiling for .NET 1.0 (may be overriden by FORCE_CLR10)
+ CLR10_UP Defined when compiling for .NET 1.0 or higher
+ CLR11 Defined when compiling for .NET 1.1 (may be overriden by FORCE_CLR11)
+ CLR11_UP Defined when compiling for .NET 1.1 or higher
+ CLR20 Defined when compiling for .NET 2.0 (may be overriden by FORCE_CLR20)
+ CLR20_UP Defined when compiling for .NET 2.0 or higher
+
+
+- Feature Directives
+
+ The features directives are used to test if the compiler supports specific
+ features, such as method overloading, and adjust the sources accordingly. Use
+ of these directives is preferred over the use of the DELPHI and COMPILER
+ directives.
+
+ Directive Description
+ ------------------------------------------------------------------------------
+ SUPPORTS_CONSTPARAMS Compiler supports const parameters (D1+)
+ SUPPORTS_SINGLE Compiler supports the Single type (D1+)
+ SUPPORTS_DOUBLE Compiler supports the Double type (D1+)
+ SUPPORTS_EXTENDED Compiler supports the Extended type (D1+)
+ SUPPORTS_CURRENCY Compiler supports the Currency type (D2+)
+ SUPPORTS_THREADVAR Compiler supports threadvar declarations (D2+)
+ SUPPORTS_OUTPARAMS Compiler supports out parameters (D3+)
+ SUPPORTS_VARIANT Compiler supports variant (D2+)
+ SUPPORTS_WIDECHAR Compiler supports the WideChar type (D2+)
+ SUPPORTS_WIDESTRING Compiler supports the WideString type (D3+/BCB3+)
+ SUPPORTS_INTERFACE Compiler supports interfaces (D3+/BCB3+)
+ SUPPORTS_DISPINTERFACE Compiler supports dispatch interfaces (D3+/BCB3+)
+ SUPPORTS_DISPID Compiler supports dispatch ids (D3+/BCB3+/FPC)
+ SUPPORTS_EXTSYM Compiler supports the $EXTERNALSYM directive (D4+/BCB3+)
+ SUPPORTS_NODEFINE Compiler supports the $NODEFINE directive (D4+/BCB3+)
+ SUPPORTS_LONGWORD Compiler supports the LongWord type (unsigned 32 bit) (D4+/BCB4+)
+ SUPPORTS_INT64 Compiler supports the Int64 type (D4+/BCB4+)
+ SUPPORTS_UINT64 Compiler supports the UInt64 type (D7+)
+ SUPPORTS_DYNAMICARRAYS Compiler supports dynamic arrays (D4+/BCB4+)
+ SUPPORTS_DEFAULTPARAMS Compiler supports default parameters (D4+/BCB4+)
+ SUPPORTS_OVERLOAD Compiler supports overloading (D4+/BCB4+)
+ SUPPORTS_IMPLEMENTS Compiler supports implements (D4+/BCB4+)
+ SUPPORTS_DEPRECATED Compiler supports the deprecated directive (D6+/BCB6+)
+ SUPPORTS_PLATFORM Compiler supports the platform directive (D6+/BCB6+)
+ SUPPORTS_LIBRARY Compiler supports the library directive (D6+/BCB6+/FPC)
+ SUPPORTS_LOCAL Compiler supports the local directive (D6+/BCB6+)
+ SUPPORTS_SETPEFLAGS Compiler supports the SetPEFlags directive (D6+/BCB6+)
+ SUPPORTS_EXPERIMENTAL_WARNINGS Compiler supports the WARN SYMBOL_EXPERIMENTAL and WARN UNIT_EXPERIMENTAL directives (D6+/BCB6+)
+ SUPPORTS_INLINE Compiler supports the inline directive (D9+/FPC)
+ SUPPORTS_FOR_IN Compiler supports for in loops (D9+)
+ SUPPORTS_NESTED_CONSTANTS Compiler supports nested constants (D9+)
+ SUPPORTS_NESTED_TYPES Compiler supports nested types (D9+)
+ SUPPORTS_REGION Compiler supports the REGION and ENDREGION directives (D9+)
+ SUPPORTS_ENHANCED_RECORDS Compiler supports class [operator|function|procedure] for record types (D9.NET, D10+)
+ SUPPORTS_CLASS_FIELDS Compiler supports class fields (D9.NET, D10+)
+ SUPPORTS_CLASS_HELPERS Compiler supports class helpers (D9.NET, D10+)
+ SUPPORTS_CLASS_OPERATORS Compiler supports class operators (D9.NET, D10+)
+ SUPPORTS_CLASS_CTORDTORS Compiler supports class contructors/destructors (D14+)
+ SUPPORTS_STRICT Compiler supports strict keyword (D9.NET, D10+)
+ SUPPORTS_STATIC Compiler supports static keyword (D9.NET, D10+)
+ SUPPORTS_FINAL Compiler supports final keyword (D9.NET, D10+)
+ SUPPORTS_METHODINFO Compiler supports the METHODINFO directives (D10+)
+ SUPPORTS_GENERICS Compiler supports generic implementations (D11.NET, D12+)
+ SUPPORTS_GENERIC_TYPES Compiler supports generic implementations of types (D11.NET, D12+, FPC)
+ SUPPORTS_GENERIC_METHODS Compiler supports generic implementations of methods (D11.NET, D12+, FPC)
+ SUPPORTS_GENERIC_ROUTINES Compiler supports generic implementations of global functions/procedures (FPC)
+ SUPPORTS_DEPRECATED_DETAILS Compiler supports additional text for the deprecated directive (D11.NET, D12+)
+ ACCEPT_DEPRECATED Compiler supports or ignores the deprecated directive (D6+/BCB6+/FPC)
+ ACCEPT_PLATFORM Compiler supports or ignores the platform directive (D6+/BCB6+/FPC)
+ ACCEPT_LIBRARY Compiler supports or ignores the library directive (D6+/BCB6+)
+ SUPPORTS_CUSTOMVARIANTS Compiler supports custom variants (D6+/BCB6+)
+ SUPPORTS_VARARGS Compiler supports varargs (D6+/BCB6+)
+ SUPPORTS_ENUMVALUE Compiler supports assigning ordinalities to values of enums (D6+/BCB6+)
+ SUPPORTS_DEPRECATED_WARNINGS Compiler supports deprecated warnings (D6+/BCB6+)
+ SUPPORTS_LIBRARY_WARNINGS Compiler supports library warnings (D6+/BCB6+)
+ SUPPORTS_PLATFORM_WARNINGS Compiler supports platform warnings (D6+/BCB6+)
+ SUPPORTS_UNSAFE_WARNINGS Compiler supports unsafe warnings (D7)
+ SUPPORTS_WEAKPACKAGEUNIT Compiler supports the WEAKPACKAGEUNIT directive
+ SUPPORTS_COMPILETIME_MESSAGES Compiler supports the MESSAGE directive
+ SUPPORTS_PACKAGES Compiler supports Packages
+ HAS_UNIT_LIBC Unit Libc exists (Kylix, FPC on Linux/x86)
+ HAS_UNIT_RTLCONSTS Unit RTLConsts exists (D6+/BCB6+/FPC)
+ HAS_UNIT_TYPES Unit Types exists (D6+/BCB6+/FPC)
+ HAS_UNIT_VARIANTS Unit Variants exists (D6+/BCB6+/FPC)
+ HAS_UNIT_STRUTILS Unit StrUtils exists (D6+/BCB6+/FPC)
+ HAS_UNIT_DATEUTILS Unit DateUtils exists (D6+/BCB6+/FPC)
+ HAS_UNIT_CONTNRS Unit contnrs exists (D6+/BCB6+/FPC)
+ HAS_UNIT_HTTPPROD Unit HTTPProd exists (D9+)
+ HAS_UNIT_GIFIMG Unit GifImg exists (D11+)
+ HAS_UNIT_ANSISTRINGS Unit AnsiStrings exists (D12+)
+ HAS_UNIT_PNGIMAGE Unit PngImage exists (D12+)
+ HAS_UNIT_CHARACTER Unit Character exists (D12+)
+ XPLATFORM_RTL The RTL supports crossplatform function names (e.g. RaiseLastOSError) (D6+/BCB6+/FPC)
+ SUPPORTS_UNICODE string type is aliased to an unicode string (WideString or UnicodeString) (DX.NET, D12+)
+ SUPPORTS_UNICODE_STRING Compiler supports UnicodeString (D12+)
+ SUPPORTS_INT_ALIASES Types Int8, Int16, Int32, UInt8, UInt16 and UInt32 are defined in the unit System (D12+)
+ HAS_UNIT_RTTI Unit RTTI is available (D14+)
+ SUPPORTS_CAST_INTERFACE_TO_OBJ The compiler supports casts from interfaces to objects (D14+)
+ SUPPORTS_DELAYED_LOADING The compiler generates stubs for delaying imported function loads (D14+)
+ HAS_UNIT_REGULAREXPRESSIONSAPI Unit RegularExpressionsAPI is available (D15+)
+ HAS_UNIT_SYSTEM_UITYPES Unit System.UITypes is available (D16+)
+ HAS_UNIT_SYSTEM_ACTIONS Unit System.Actions is available (D17+)
+ DEPRECATED_SYSUTILS_ANSISTRINGS AnsiString functions from SysUtils are deprecated and moved to System.AnsiStrings (D18+)
+ HAS_PROPERTY_STYLEELEMENTS TControl has a StyleElements property (D17+)
+ HAS_AUTOMATIC_DB_FIELDS Database fields are automatically created/refreshed (D20+)
+ HAS_EARGUMENTEXCEPTION Exception class EArgumentException is available (D14+)
+ HAS_ENOTIMPLEMENTED Exception class ENotImplemented is available (D15+)
+ HAS_UNIT_VCL_THEMES Unit Vcl.Themes is available (D16+)
+ HAS_UNIT_UXTHEME Unit (Vcl.)UxTheme is available (D7+)
+ HAS_EXCEPTION_STACKTRACE Exception class has the StackTrace propery (D12+)
+ SUPPORTS_LEGACYIFEND Compiler supports the LEGACYIFEND directive (D17+)
+ DEPRECATED_TCHARACTER TCharacter is deprecated and replaced by a record helper on Char (D18+)
+
+
+- Compiler Settings
+
+ The compiler settings directives indicate whether a specific compiler setting
+ is in effect. This facilitates changing compiler settings locally in a more
+ compact and readible manner.
+
+ Directive Description
+ ------------------------------------------------------------------------------
+ ALIGN_ON Compiling in the A+ state (no alignment)
+ BOOLEVAL_ON Compiling in the B+ state (complete boolean evaluation)
+ ASSERTIONS_ON Compiling in the C+ state (assertions on)
+ DEBUGINFO_ON Compiling in the D+ state (debug info generation on)
+ IMPORTEDDATA_ON Compiling in the G+ state (creation of imported data references)
+ LONGSTRINGS_ON Compiling in the H+ state (string defined as AnsiString)
+ IOCHECKS_ON Compiling in the I+ state (I/O checking enabled)
+ WRITEABLECONST_ON Compiling in the J+ state (typed constants can be modified)
+ LOCALSYMBOLS Compiling in the L+ state (local symbol generation)
+ LOCALSYMBOLS_ON Alias of LOCALSYMBOLS
+ TYPEINFO_ON Compiling in the M+ state (RTTI generation on)
+ OPTIMIZATION_ON Compiling in the O+ state (code optimization on)
+ OPENSTRINGS_ON Compiling in the P+ state (variable string parameters are openstrings)
+ OVERFLOWCHECKS_ON Compiling in the Q+ state (overflow checing on)
+ RANGECHECKS_ON Compiling in the R+ state (range checking on)
+ TYPEDADDRESS_ON Compiling in the T+ state (pointers obtained using the @ operator are typed)
+ SAFEDIVIDE_ON Compiling in the U+ state (save FDIV instruction through RTL emulation)
+ VARSTRINGCHECKS_ON Compiling in the V+ state (type checking of shortstrings)
+ STACKFRAMES_ON Compiling in the W+ state (generation of stack frames)
+ EXTENDEDSYNTAX_ON Compiling in the X+ state (Delphi extended syntax enabled)
+*)
+
+{$DEFINE BORLAND}
+
+{ Set FreePascal to Delphi mode }
+{$IFDEF FPC}
+ {$MODE DELPHI}
+ {$ASMMODE INTEL}
+ {$UNDEF BORLAND}
+ {$DEFINE CPUASM}
+ {$DEFINE JCL_CONFIGURED}
+ {$UNDEF PUREPASCAL}
+ {$IFNDEF MSWINDOWS}
+ {$DEFINE FPCNONWINDOWS}
+ {$ENDIF MSWINDOWS}
+ // FPC defines CPU32, CPU64 and Unix automatically
+{$ENDIF}
+
+{$IFDEF BORLAND}
+ {$IFDEF LINUX}
+ {$IFDEF VER140} // Only under Delphi 6, LINUX implies Kylix
+ {$DEFINE KYLIX}
+ {$ENDIF}
+ {$ENDIF LINUX}
+ {$IFNDEF CLR}
+ {$IFNDEF CPUX86}
+ // CPUX86 is not defined, which means it most likely is a 64 bits compiler.
+ // However, this is only the case if either of two other symbols are defined:
+ // http://docwiki.embarcadero.com/RADStudio/Seattle/en/Conditional_compilation_%28Delphi%29
+ {$DEFINE CPU64}
+ {$DEFINE DELPHI64_TEMPORARY}
+ {$IFNDEF CPUX64}
+ {$IFNDEF CPU64BITS}
+ {$DEFINE CPU386} // None of the two 64-bits symbols are defined, assume this is 32-bit
+ {$DEFINE CPU32}
+ {$UNDEF CPU64}
+ {$UNDEF DELPHI64_TEMPORARY}
+ {$ENDIF ~CPU64BITS}
+ {$ENDIF ~CPUX64}
+ {$ELSE ~CPUX86}
+ {$DEFINE CPU386}
+ {$DEFINE CPU32}
+ {$ENDIF ~CPUX86}
+
+ // The ASSEMBLER symbol appeared with Delphi 7
+ {$IFNDEF COMPILER7_UP}
+ {$DEFINE CPUASM}
+ {$ELSE}
+ {$IFDEF ASSEMBLER}
+ {$DEFINE CPUASM}
+ {$ENDIF ASSEMBLER}
+ {$ENDIF ~COMPILER7_UP}
+ {$ENDIF ~CLR}
+{$ENDIF BORLAND}
+
+{------------------------------------------------------------------------------}
+{ VERXXX to COMPILERX, DELPHIX and BCBX mappings }
+{------------------------------------------------------------------------------}
+
+{$IFDEF BORLAND}
+ {$IFDEF KYLIX}
+ {$I kylix.inc} // FPC incompatible stuff
+ {$ELSE ~KYLIX}
+
+ {$DEFINE UNKNOWN_COMPILER_VERSION}
+
+ {$IFDEF VER80}
+ {$DEFINE COMPILER1}
+ {$DEFINE DELPHI1}
+ {$DEFINE DELPHICOMPILER1}
+ {$DEFINE RTL80_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF}
+
+ {$IFDEF VER90}
+ {$DEFINE COMPILER2}
+ {$DEFINE DELPHI2}
+ {$DEFINE DELPHICOMPILER2}
+ {$DEFINE RTL90_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF}
+
+ {$IFDEF VER93}
+ {$DEFINE COMPILER2}
+ {$DEFINE BCB1}
+ {$DEFINE BCB}
+ {$DEFINE RTL93_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF}
+
+ {$IFDEF VER100}
+ {$DEFINE COMPILER3}
+ {$DEFINE DELPHI3}
+ {$DEFINE DELPHICOMPILER3}
+ {$DEFINE RTL100_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF}
+
+ {$IFDEF VER110}
+ {$DEFINE COMPILER35}
+ {$DEFINE BCB3}
+ {$DEFINE BCB}
+ {$DEFINE RTL110_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF}
+
+ {$IFDEF VER120}
+ {$DEFINE COMPILER4}
+ {$DEFINE DELPHI4}
+ {$DEFINE DELPHICOMPILER4}
+ {$DEFINE RTL120_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF}
+
+ {$IFDEF VER125}
+ {$DEFINE COMPILER4}
+ {$DEFINE BCB4}
+ {$DEFINE BCB}
+ {$DEFINE RTL125_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF}
+
+ {$IFDEF VER130}
+ {$DEFINE COMPILER5}
+ {$IFDEF BCB}
+ {$DEFINE BCB5}
+ {$ELSE}
+ {$DEFINE DELPHI5}
+ {$DEFINE DELPHICOMPILER5}
+ {$ENDIF}
+ {$DEFINE RTL130_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF}
+
+ {$IFDEF VER140}
+ {$DEFINE COMPILER6}
+ {$IFDEF BCB}
+ {$DEFINE BCB6}
+ {$ELSE}
+ {$DEFINE DELPHI6}
+ {$DEFINE DELPHICOMPILER6}
+ {$ENDIF}
+ {$DEFINE RTL140_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF}
+
+ {$IFDEF VER150}
+ {$DEFINE COMPILER7}
+ {$DEFINE DELPHI7}
+ {$DEFINE DELPHICOMPILER7}
+ {$DEFINE RTL150_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF}
+
+ {$IFDEF VER160}
+ {$DEFINE BDS2}
+ {$DEFINE BDS}
+ {$IFDEF CLR}
+ {$DEFINE CLR10}
+ {$ENDIF CLR}
+ {$DEFINE COMPILER8}
+ {$DEFINE DELPHI8}
+ {$DEFINE DELPHICOMPILER8}
+ {$DEFINE RTL160_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF}
+
+ {$IFDEF VER170}
+ {$DEFINE BDS3}
+ {$DEFINE BDS}
+ {$IFDEF CLR}
+ {$DEFINE CLR11}
+ {$ENDIF CLR}
+ {$DEFINE COMPILER9}
+ {$DEFINE DELPHI9}
+ {$DEFINE DELPHI2005} // synonym to DELPHI9
+ {$DEFINE DELPHICOMPILER9}
+ {$DEFINE RTL170_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF}
+
+ {$IFDEF VER180}
+ {$DEFINE BDS}
+ {$IFDEF CLR}
+ {$DEFINE CLR11}
+ {$ENDIF CLR}
+ {$IFDEF VER185}
+ {$DEFINE BDS5}
+ {$DEFINE COMPILER11}
+ {$IFDEF BCB}
+ {$DEFINE BCB11}
+ {$ELSE}
+ {$DEFINE DELPHI11}
+ {$DEFINE DELPHI2007} // synonym to DELPHI11
+ {$DEFINE DELPHICOMPILER11}
+ {$ENDIF}
+ {$DEFINE RTL185_UP}
+ {$ELSE ~~VER185}
+ {$DEFINE BDS4}
+ {$DEFINE COMPILER10}
+ {$IFDEF BCB}
+ {$DEFINE BCB10}
+ {$ELSE}
+ {$DEFINE DELPHI10}
+ {$DEFINE DELPHI2006} // synonym to DELPHI10
+ {$DEFINE DELPHICOMPILER10}
+ {$ENDIF}
+ {$DEFINE RTL180_UP}
+ {$ENDIF ~VER185}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF}
+
+ {$IFDEF VER190} // Delphi 2007 for .NET
+ {$DEFINE BDS}
+ {$DEFINE BDS5}
+ {$IFDEF CLR}
+ {$DEFINE CLR20}
+ {$ENDIF CLR}
+ {$DEFINE COMPILER11}
+ {$DEFINE DELPHI11}
+ {$DEFINE DELPHI2007} // synonym to DELPHI11
+ {$DEFINE DELPHICOMPILER11}
+ {$DEFINE RTL190_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF VER190}
+
+ {$IFDEF VER200} // RAD Studio 2009
+ {$DEFINE BDS}
+ {$DEFINE BDS6}
+ {$IFDEF CLR}
+ {$DEFINE CLR20}
+ {$ENDIF CLR}
+ {$DEFINE COMPILER12}
+ {$IFDEF BCB}
+ {$DEFINE BCB12}
+ {$ELSE}
+ {$DEFINE DELPHI12}
+ {$DEFINE DELPHI2009} // synonym to DELPHI12
+ {$DEFINE DELPHICOMPILER12}
+ {$ENDIF BCB}
+ {$IFDEF CLR}
+ {$DEFINE RTL190_UP}
+ {$ELSE}
+ {$DEFINE RTL200_UP}
+ {$ENDIF}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF VER200}
+
+ {$IFDEF VER210} // RAD Studio 2010
+ {$DEFINE BDS}
+ {$DEFINE BDS7}
+ {$DEFINE COMPILER14}
+ {$IFDEF BCB}
+ {$DEFINE BCB14}
+ {$ELSE}
+ {$DEFINE DELPHI14}
+ {$DEFINE DELPHI2010} // synonym to DELPHI14
+ {$DEFINE DELPHICOMPILER14}
+ {$ENDIF BCB}
+ {$DEFINE RTL210_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF VER210}
+
+ {$IFDEF VER220} // RAD Studio XE
+ {$DEFINE BDS}
+ {$DEFINE BDS8}
+ {$DEFINE COMPILER15}
+ {$IFDEF BCB}
+ {$DEFINE BCB15}
+ {$ELSE}
+ {$DEFINE DELPHI15}
+ {$DEFINE DELPHIXE} // synonym to DELPHI15
+ {$DEFINE DELPHICOMPILER15}
+ {$ENDIF BCB}
+ {$DEFINE RTL220_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF VER220}
+
+ {$IFDEF VER230} // RAD Studio XE2
+ {$DEFINE BDS}
+ {$DEFINE BDS9}
+ {$DEFINE COMPILER16}
+ {$IFDEF BCB}
+ {$DEFINE BCB16}
+ {$ELSE}
+ {$DEFINE DELPHI16}
+ {$DEFINE DELPHIXE2} // synonym to DELPHI16
+ {$DEFINE DELPHICOMPILER16}
+ {$ENDIF BCB}
+ {$DEFINE RTL230_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF VER230}
+
+ {$IFDEF VER240} // RAD Studio XE3
+ {$DEFINE BDS}
+ {$DEFINE BDS10}
+ {$DEFINE COMPILER17}
+ {$IFDEF BCB}
+ {$DEFINE BCB17}
+ {$ELSE}
+ {$DEFINE DELPHI17}
+ {$DEFINE DELPHIXE3} // synonym to DELPHI17
+ {$DEFINE DELPHICOMPILER17}
+ {$ENDIF BCB}
+ {$DEFINE RTL240_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF VER240}
+
+ {$IFDEF VER250} // RAD Studio XE4
+ {$DEFINE BDS}
+ {$DEFINE BDS11}
+ {$DEFINE COMPILER18}
+ {$IFDEF BCB}
+ {$DEFINE BCB18}
+ {$ELSE}
+ {$DEFINE DELPHI18}
+ {$DEFINE DELPHIXE4} // synonym to DELPHI18
+ {$DEFINE DELPHICOMPILER18}
+ {$ENDIF BCB}
+ {$DEFINE RTL250_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF VER250}
+
+ {$IFDEF VER260} // RAD Studio XE5
+ {$DEFINE BDS}
+ {$DEFINE BDS12}
+ {$DEFINE COMPILER19}
+ {$IFDEF BCB}
+ {$DEFINE BCB19}
+ {$ELSE}
+ {$DEFINE DELPHI19}
+ {$DEFINE DELPHIXE5} // synonym to DELPHI19
+ {$DEFINE DELPHICOMPILER19}
+ {$ENDIF BCB}
+ {$DEFINE RTL260_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF VER260}
+
+ {$IFDEF VER270} // RAD Studio XE6
+ {$DEFINE BDS}
+ {$DEFINE BDS14}
+ {$DEFINE COMPILER20}
+ {$IFDEF BCB}
+ {$DEFINE BCB20}
+ {$ELSE}
+ {$DEFINE DELPHI20}
+ {$DEFINE DELPHIXE6} // synonym to DELPHI20
+ {$DEFINE DELPHICOMPILER20}
+ {$ENDIF BCB}
+ {$DEFINE RTL270_UP}
+ {$DEFINE RTL_270_OR_FPC}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF VER270}
+
+ {$IFDEF VER280} // RAD Studio XE7
+ {$DEFINE BDS}
+ {$DEFINE BDS15}
+ {$DEFINE COMPILER21}
+ {$IFDEF BCB}
+ {$DEFINE BCB21}
+ {$ELSE}
+ {$DEFINE DELPHI21}
+ {$DEFINE DELPHIXE7} // synonym to DELPHI21
+ {$DEFINE DELPHICOMPILER21}
+ {$ENDIF BCB}
+ {$DEFINE RTL280_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF VER280}
+
+ {$IFDEF VER290} // RAD Studio XE8
+ {$DEFINE BDS}
+ {$DEFINE BDS16}
+ {$DEFINE COMPILER22}
+ {$IFDEF BCB}
+ {$DEFINE BCB22}
+ {$ELSE}
+ {$DEFINE DELPHI22}
+ {$DEFINE DELPHIXE8} // synonym to DELPHI22
+ {$DEFINE DELPHICOMPILER22}
+ {$ENDIF BCB}
+ {$DEFINE RTL290_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF VER290}
+
+ {$IFDEF VER300} // RAD Studio 10
+ {$DEFINE BDS}
+ {$DEFINE BDS17}
+ {$DEFINE COMPILER23}
+ {$IFDEF BCB}
+ {$DEFINE BCB23}
+ {$ELSE}
+ {$DEFINE DELPHI23}
+ {$DEFINE DELPHIX_SEATTLE} // synonym to DELPHI23
+ {$DEFINE DELPHICOMPILER23}
+ {$ENDIF BCB}
+ {$DEFINE RTL300_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF VER300}
+
+ {$IFDEF VER310} // RAD Studio 10.1
+ {$DEFINE BDS}
+ {$DEFINE BDS18}
+ {$DEFINE COMPILER24}
+ {$IFDEF BCB}
+ {$DEFINE BCB24}
+ {$ELSE}
+ {$DEFINE DELPHI24}
+ {$DEFINE DELPHIX_BERLIN} // synonym to DELPHI24
+ {$DEFINE DELPHICOMPILER24}
+ {$ENDIF BCB}
+ {$DEFINE RTL310_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF VER310}
+
+ {$IFDEF VER320} // RAD Studio 10.2
+ {$DEFINE BDS}
+ {$DEFINE BDS19}
+ {$DEFINE COMPILER25}
+ {$IFDEF BCB}
+ {$DEFINE BCB25}
+ {$ELSE}
+ {$DEFINE DELPHI25}
+ {$DEFINE DELPHIX_TOKYO} // synonym to DELPHI25
+ {$DEFINE DELPHICOMPILER25}
+ {$ENDIF BCB}
+ {$DEFINE RTL320_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF VER320}
+
+ {$IFDEF VER330} // RAD Studio 10.3
+ {$DEFINE BDS}
+ {$DEFINE BDS20}
+ {$DEFINE COMPILER26}
+ {$IFDEF BCB}
+ {$DEFINE BCB26}
+ {$ELSE}
+ {$DEFINE DELPHI26}
+ {$DEFINE DELPHIX_RIO} // synonym to DELPHI26
+ {$DEFINE DELPHICOMPILER26}
+ {$ENDIF BCB}
+ {$DEFINE RTL330_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF VER330}
+
+ {$IFDEF VER340} // RAD Studio 10.4
+ {$DEFINE BDS}
+ {$DEFINE BDS21}
+ {$DEFINE COMPILER27}
+ {$IFDEF BCB}
+ {$DEFINE BCB27}
+ {$ELSE}
+ {$DEFINE DELPHI27}
+ {$DEFINE DELPHICOMPILER27}
+ {$ENDIF BCB}
+ {$DEFINE RTL340_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF VER340}
+
+ {$IFDEF UNKNOWN_COMPILER_VERSION} // adjust for newer version (always use latest version)
+ {$DEFINE BDS}
+ {$DEFINE BDS21}
+ {$DEFINE COMPILER27}
+ {$IFDEF BCB}
+ {$DEFINE BCB27}
+ {$ELSE}
+ {$DEFINE DELPHI27}
+ {$DEFINE DELPHICOMPILER27}
+ {$ENDIF BCB}
+ {$DEFINE RTL340_UP}
+ {$UNDEF UNKNOWN_COMPILER_VERSION}
+ {$ENDIF}
+
+ {$ENDIF ~KYLIX}
+
+ {$IFDEF BCB}
+ {$DEFINE CPPBUILDER}
+ {$DEFINE BCBCOMPILER}
+ {$ELSE ~BCB}
+ {$DEFINE DELPHI}
+ {$DEFINE DELPHICOMPILER}
+ {$ENDIF ~BCB}
+
+{$ENDIF BORLAND}
+
+{------------------------------------------------------------------------------}
+{ DELPHIX_UP from DELPHIX mappings }
+{------------------------------------------------------------------------------}
+
+{$IFDEF DELPHI27} {$DEFINE DELPHI27_UP} {$ENDIF}
+{$IFDEF DELPHI26} {$DEFINE DELPHI26_UP} {$ENDIF}
+{$IFDEF DELPHI25} {$DEFINE DELPHI25_UP} {$ENDIF}
+{$IFDEF DELPHI24} {$DEFINE DELPHI24_UP} {$ENDIF}
+{$IFDEF DELPHI23} {$DEFINE DELPHI23_UP} {$ENDIF}
+{$IFDEF DELPHI22} {$DEFINE DELPHI22_UP} {$ENDIF}
+{$IFDEF DELPHI21} {$DEFINE DELPHI21_UP} {$ENDIF}
+{$IFDEF DELPHI20} {$DEFINE DELPHI20_UP} {$ENDIF}
+{$IFDEF DELPHI19} {$DEFINE DELPHI19_UP} {$ENDIF}
+{$IFDEF DELPHI18} {$DEFINE DELPHI18_UP} {$ENDIF}
+{$IFDEF DELPHI17} {$DEFINE DELPHI17_UP} {$ENDIF}
+{$IFDEF DELPHI16} {$DEFINE DELPHI16_UP} {$ENDIF}
+{$IFDEF DELPHI15} {$DEFINE DELPHI15_UP} {$ENDIF}
+{$IFDEF DELPHI14} {$DEFINE DELPHI14_UP} {$ENDIF}
+{$IFDEF DELPHI12} {$DEFINE DELPHI12_UP} {$ENDIF}
+{$IFDEF DELPHI11} {$DEFINE DELPHI11_UP} {$ENDIF}
+{$IFDEF DELPHI10} {$DEFINE DELPHI10_UP} {$ENDIF}
+{$IFDEF DELPHI9} {$DEFINE DELPHI9_UP} {$ENDIF}
+{$IFDEF DELPHI8} {$DEFINE DELPHI8_UP} {$ENDIF}
+{$IFDEF DELPHI7} {$DEFINE DELPHI7_UP} {$ENDIF}
+{$IFDEF DELPHI6} {$DEFINE DELPHI6_UP} {$ENDIF}
+{$IFDEF DELPHI5} {$DEFINE DELPHI5_UP} {$ENDIF}
+{$IFDEF DELPHI4} {$DEFINE DELPHI4_UP} {$ENDIF}
+{$IFDEF DELPHI3} {$DEFINE DELPHI3_UP} {$ENDIF}
+{$IFDEF DELPHI2} {$DEFINE DELPHI2_UP} {$ENDIF}
+{$IFDEF DELPHI1} {$DEFINE DELPHI1_UP} {$ENDIF}
+
+{------------------------------------------------------------------------------}
+{ DELPHIX_UP from DELPHIX_UP mappings }
+{------------------------------------------------------------------------------}
+
+{$IFDEF DELPHI27_UP}
+ {$DEFINE DELPHI26_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI26_UP}
+ {$DEFINE DELPHIX_RIO_UP} // synonym to DELPHI26_UP
+ {$DEFINE DELPHI25_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI25_UP}
+ {$DEFINE DELPHIX_TOKYO_UP} // synonym to DELPHI25_UP
+ {$DEFINE DELPHI24_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI24_UP}
+ {$DEFINE DELPHIX_BERLIN_UP} // synonym to DELPHI24_UP
+ {$DEFINE DELPHI23_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI23_UP}
+ {$DEFINE DELPHIX_SEATTLE_UP} // synonym to DELPHI23_UP
+ {$DEFINE DELPHI22_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI22_UP}
+ {$DEFINE DELPHIXE8_UP} // synonym to DELPHI22_UP
+ {$DEFINE DELPHI21_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI21_UP}
+ {$DEFINE DELPHIXE7_UP} // synonym to DELPHI21_UP
+ {$DEFINE DELPHI20_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI20_UP}
+ {$DEFINE DELPHIXE6_UP} // synonym to DELPHI20_UP
+ {$DEFINE DELPHI19_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI19_UP}
+ {$DEFINE DELPHIXE5_UP} // synonym to DELPHI19_UP
+ {$DEFINE DELPHI18_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI18_UP}
+ {$DEFINE DELPHIXE4_UP} // synonym to DELPHI18_UP
+ {$DEFINE DELPHI17_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI17_UP}
+ {$DEFINE DELPHIXE3_UP} // synonym to DELPHI17_UP
+ {$DEFINE DELPHI16_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI16_UP}
+ {$DEFINE DELPHIXE2_UP} // synonym to DELPHI16_UP
+ {$DEFINE DELPHI15_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI15_UP}
+ {$DEFINE DELPHIXE_UP} // synonym to DELPHI15_UP
+ {$DEFINE DELPHI14_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI14_UP}
+ {$DEFINE DELPHI2010_UP} // synonym to DELPHI14_UP
+ {$DEFINE DELPHI12_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI12_UP}
+ {$DEFINE DELPHI2009_UP} // synonym to DELPHI12_UP
+ {$DEFINE DELPHI11_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI11_UP}
+ {$DEFINE DELPHI2007_UP} // synonym to DELPHI11_UP
+ {$DEFINE DELPHI10_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI10_UP}
+ {$DEFINE DELPHI2006_UP} // synonym to DELPHI10_UP
+ {$DEFINE DELPHI9_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI9_UP}
+ {$DEFINE DELPHI2005_UP} // synonym to DELPHI9_UP
+ {$DEFINE DELPHI8_UP}
+{$ENDIF}
+
+{$IFDEF DELPHI8_UP} {$DEFINE DELPHI7_UP} {$ENDIF}
+{$IFDEF DELPHI7_UP} {$DEFINE DELPHI6_UP} {$ENDIF}
+{$IFDEF DELPHI6_UP} {$DEFINE DELPHI5_UP} {$ENDIF}
+{$IFDEF DELPHI5_UP} {$DEFINE DELPHI4_UP} {$ENDIF}
+{$IFDEF DELPHI4_UP} {$DEFINE DELPHI3_UP} {$ENDIF}
+{$IFDEF DELPHI3_UP} {$DEFINE DELPHI2_UP} {$ENDIF}
+{$IFDEF DELPHI2_UP} {$DEFINE DELPHI1_UP} {$ENDIF}
+
+{------------------------------------------------------------------------------}
+{ BCBX_UP from BCBX mappings }
+{------------------------------------------------------------------------------}
+
+{$IFDEF BCB27} {$DEFINE BCB27_UP} {$ENDIF}
+{$IFDEF BCB26} {$DEFINE BCB26_UP} {$ENDIF}
+{$IFDEF BCB25} {$DEFINE BCB25_UP} {$ENDIF}
+{$IFDEF BCB24} {$DEFINE BCB24_UP} {$ENDIF}
+{$IFDEF BCB23} {$DEFINE BCB23_UP} {$ENDIF}
+{$IFDEF BCB22} {$DEFINE BCB22_UP} {$ENDIF}
+{$IFDEF BCB21} {$DEFINE BCB21_UP} {$ENDIF}
+{$IFDEF BCB20} {$DEFINE BCB20_UP} {$ENDIF}
+{$IFDEF BCB19} {$DEFINE BCB19_UP} {$ENDIF}
+{$IFDEF BCB18} {$DEFINE BCB18_UP} {$ENDIF}
+{$IFDEF BCB17} {$DEFINE BCB17_UP} {$ENDIF}
+{$IFDEF BCB16} {$DEFINE BCB16_UP} {$ENDIF}
+{$IFDEF BCB15} {$DEFINE BCB15_UP} {$ENDIF}
+{$IFDEF BCB14} {$DEFINE BCB14_UP} {$ENDIF}
+{$IFDEF BCB12} {$DEFINE BCB12_UP} {$ENDIF}
+{$IFDEF BCB11} {$DEFINE BCB11_UP} {$ENDIF}
+{$IFDEF BCB10} {$DEFINE BCB10_UP} {$ENDIF}
+{$IFDEF BCB6} {$DEFINE BCB6_UP} {$ENDIF}
+{$IFDEF BCB5} {$DEFINE BCB5_UP} {$ENDIF}
+{$IFDEF BCB4} {$DEFINE BCB4_UP} {$ENDIF}
+{$IFDEF BCB3} {$DEFINE BCB3_UP} {$ENDIF}
+{$IFDEF BCB1} {$DEFINE BCB1_UP} {$ENDIF}
+
+{------------------------------------------------------------------------------}
+{ BCBX_UP from BCBX_UP mappings }
+{------------------------------------------------------------------------------}
+
+{$IFDEF BCB27_UP} {$DEFINE BCB26_UP} {$ENDIF}
+{$IFDEF BCB26_UP} {$DEFINE BCB25_UP} {$ENDIF}
+{$IFDEF BCB25_UP} {$DEFINE BCB24_UP} {$ENDIF}
+{$IFDEF BCB24_UP} {$DEFINE BCB23_UP} {$ENDIF}
+{$IFDEF BCB23_UP} {$DEFINE BCB22_UP} {$ENDIF}
+{$IFDEF BCB22_UP} {$DEFINE BCB21_UP} {$ENDIF}
+{$IFDEF BCB21_UP} {$DEFINE BCB20_UP} {$ENDIF}
+{$IFDEF BCB20_UP} {$DEFINE BCB19_UP} {$ENDIF}
+{$IFDEF BCB19_UP} {$DEFINE BCB18_UP} {$ENDIF}
+{$IFDEF BCB18_UP} {$DEFINE BCB17_UP} {$ENDIF}
+{$IFDEF BCB17_UP} {$DEFINE BCB16_UP} {$ENDIF}
+{$IFDEF BCB16_UP} {$DEFINE BCB15_UP} {$ENDIF}
+{$IFDEF BCB15_UP} {$DEFINE BCB14_UP} {$ENDIF}
+{$IFDEF BCB14_UP} {$DEFINE BCB12_UP} {$ENDIF}
+{$IFDEF BCB12_UP} {$DEFINE BCB11_UP} {$ENDIF}
+{$IFDEF BCB11_UP} {$DEFINE BCB10_UP} {$ENDIF}
+{$IFDEF BCB10_UP} {$DEFINE BCB6_UP} {$ENDIF}
+{$IFDEF BCB6_UP} {$DEFINE BCB5_UP} {$ENDIF}
+{$IFDEF BCB5_UP} {$DEFINE BCB4_UP} {$ENDIF}
+{$IFDEF BCB4_UP} {$DEFINE BCB3_UP} {$ENDIF}
+{$IFDEF BCB3_UP} {$DEFINE BCB1_UP} {$ENDIF}
+
+{------------------------------------------------------------------------------}
+{ BDSX_UP from BDSX mappings }
+{------------------------------------------------------------------------------}
+
+{$IFDEF BDS21} {$DEFINE BDS21_UP} {$ENDIF}
+{$IFDEF BDS20} {$DEFINE BDS20_UP} {$ENDIF}
+{$IFDEF BDS19} {$DEFINE BDS19_UP} {$ENDIF}
+{$IFDEF BDS18} {$DEFINE BDS18_UP} {$ENDIF}
+{$IFDEF BDS17} {$DEFINE BDS17_UP} {$ENDIF}
+{$IFDEF BDS16} {$DEFINE BDS16_UP} {$ENDIF}
+{$IFDEF BDS15} {$DEFINE BDS15_UP} {$ENDIF}
+{$IFDEF BDS14} {$DEFINE BDS14_UP} {$ENDIF}
+{$IFDEF BDS12} {$DEFINE BDS12_UP} {$ENDIF}
+{$IFDEF BDS11} {$DEFINE BDS11_UP} {$ENDIF}
+{$IFDEF BDS10} {$DEFINE BDS10_UP} {$ENDIF}
+{$IFDEF BDS9} {$DEFINE BDS9_UP} {$ENDIF}
+{$IFDEF BDS8} {$DEFINE BDS8_UP} {$ENDIF}
+{$IFDEF BDS7} {$DEFINE BDS7_UP} {$ENDIF}
+{$IFDEF BDS6} {$DEFINE BDS6_UP} {$ENDIF}
+{$IFDEF BDS5} {$DEFINE BDS5_UP} {$ENDIF}
+{$IFDEF BDS4} {$DEFINE BDS4_UP} {$ENDIF}
+{$IFDEF BDS3} {$DEFINE BDS3_UP} {$ENDIF}
+{$IFDEF BDS2} {$DEFINE BDS2_UP} {$ENDIF}
+
+{------------------------------------------------------------------------------}
+{ BDSX_UP from BDSX_UP mappings }
+{------------------------------------------------------------------------------}
+
+{$IFDEF BDS21_UP} {$DEFINE BDS20_UP} {$ENDIF}
+{$IFDEF BDS20_UP} {$DEFINE BDS19_UP} {$ENDIF}
+{$IFDEF BDS19_UP} {$DEFINE BDS18_UP} {$ENDIF}
+{$IFDEF BDS18_UP} {$DEFINE BDS17_UP} {$ENDIF}
+{$IFDEF BDS17_UP} {$DEFINE BDS16_UP} {$ENDIF}
+{$IFDEF BDS16_UP} {$DEFINE BDS15_UP} {$ENDIF}
+{$IFDEF BDS15_UP} {$DEFINE BDS14_UP} {$ENDIF}
+{$IFDEF BDS14_UP} {$DEFINE BDS12_UP} {$ENDIF}
+{$IFDEF BDS12_UP} {$DEFINE BDS11_UP} {$ENDIF}
+{$IFDEF BDS11_UP} {$DEFINE BDS10_UP} {$ENDIF}
+{$IFDEF BDS10_UP} {$DEFINE BDS9_UP} {$ENDIF}
+{$IFDEF BDS9_UP} {$DEFINE BDS8_UP} {$ENDIF}
+{$IFDEF BDS8_UP} {$DEFINE BDS7_UP} {$ENDIF}
+{$IFDEF BDS7_UP} {$DEFINE BDS6_UP} {$ENDIF}
+{$IFDEF BDS6_UP} {$DEFINE BDS5_UP} {$ENDIF}
+{$IFDEF BDS5_UP} {$DEFINE BDS4_UP} {$ENDIF}
+{$IFDEF BDS4_UP} {$DEFINE BDS3_UP} {$ENDIF}
+{$IFDEF BDS3_UP} {$DEFINE BDS2_UP} {$ENDIF}
+
+{------------------------------------------------------------------------------}
+{ DELPHICOMPILERX_UP from DELPHICOMPILERX mappings }
+{------------------------------------------------------------------------------}
+
+{$IFDEF DELPHICOMPILER27} {$DEFINE DELPHICOMPILER27_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER26} {$DEFINE DELPHICOMPILER26_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER25} {$DEFINE DELPHICOMPILER25_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER24} {$DEFINE DELPHICOMPILER24_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER23} {$DEFINE DELPHICOMPILER23_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER22} {$DEFINE DELPHICOMPILER22_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER21} {$DEFINE DELPHICOMPILER21_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER20} {$DEFINE DELPHICOMPILER20_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER19} {$DEFINE DELPHICOMPILER19_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER18} {$DEFINE DELPHICOMPILER18_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER17} {$DEFINE DELPHICOMPILER17_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER16} {$DEFINE DELPHICOMPILER16_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER15} {$DEFINE DELPHICOMPILER15_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER14} {$DEFINE DELPHICOMPILER14_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER12} {$DEFINE DELPHICOMPILER12_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER11} {$DEFINE DELPHICOMPILER11_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER10} {$DEFINE DELPHICOMPILER10_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER9} {$DEFINE DELPHICOMPILER9_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER8} {$DEFINE DELPHICOMPILER8_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER7} {$DEFINE DELPHICOMPILER7_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER6} {$DEFINE DELPHICOMPILER6_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER5} {$DEFINE DELPHICOMPILER5_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER4} {$DEFINE DELPHICOMPILER4_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER3} {$DEFINE DELPHICOMPILER3_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER2} {$DEFINE DELPHICOMPILER2_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER1} {$DEFINE DELPHICOMPILER1_UP} {$ENDIF}
+
+{------------------------------------------------------------------------------}
+{ DELPHICOMPILERX_UP from DELPHICOMPILERX_UP mappings }
+{------------------------------------------------------------------------------}
+
+{$IFDEF DELPHICOMPILER27_UP} {$DEFINE DELPHICOMPILER26_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER26_UP} {$DEFINE DELPHICOMPILER25_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER25_UP} {$DEFINE DELPHICOMPILER24_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER24_UP} {$DEFINE DELPHICOMPILER23_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER23_UP} {$DEFINE DELPHICOMPILER22_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER22_UP} {$DEFINE DELPHICOMPILER21_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER21_UP} {$DEFINE DELPHICOMPILER20_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER20_UP} {$DEFINE DELPHICOMPILER19_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER19_UP} {$DEFINE DELPHICOMPILER18_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER18_UP} {$DEFINE DELPHICOMPILER17_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER17_UP} {$DEFINE DELPHICOMPILER16_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER16_UP} {$DEFINE DELPHICOMPILER15_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER15_UP} {$DEFINE DELPHICOMPILER14_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER14_UP} {$DEFINE DELPHICOMPILER12_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER12_UP} {$DEFINE DELPHICOMPILER11_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER11_UP} {$DEFINE DELPHICOMPILER10_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER10_UP} {$DEFINE DELPHICOMPILER9_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER9_UP} {$DEFINE DELPHICOMPILER8_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER8_UP} {$DEFINE DELPHICOMPILER7_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER8_UP} {$DEFINE DELPHICOMPILER7_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER7_UP} {$DEFINE DELPHICOMPILER6_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER6_UP} {$DEFINE DELPHICOMPILER5_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER5_UP} {$DEFINE DELPHICOMPILER4_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER4_UP} {$DEFINE DELPHICOMPILER3_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER3_UP} {$DEFINE DELPHICOMPILER2_UP} {$ENDIF}
+{$IFDEF DELPHICOMPILER2_UP} {$DEFINE DELPHICOMPILER1_UP} {$ENDIF}
+
+{------------------------------------------------------------------------------}
+{ COMPILERX_UP from COMPILERX mappings }
+{------------------------------------------------------------------------------}
+
+{$IFDEF COMPILER27} {$DEFINE COMPILER27_UP} {$ENDIF}
+{$IFDEF COMPILER26} {$DEFINE COMPILER26_UP} {$ENDIF}
+{$IFDEF COMPILER25} {$DEFINE COMPILER25_UP} {$ENDIF}
+{$IFDEF COMPILER24} {$DEFINE COMPILER24_UP} {$ENDIF}
+{$IFDEF COMPILER23} {$DEFINE COMPILER23_UP} {$ENDIF}
+{$IFDEF COMPILER22} {$DEFINE COMPILER22_UP} {$ENDIF}
+{$IFDEF COMPILER21} {$DEFINE COMPILER21_UP} {$ENDIF}
+{$IFDEF COMPILER20} {$DEFINE COMPILER20_UP} {$ENDIF}
+{$IFDEF COMPILER19} {$DEFINE COMPILER19_UP} {$ENDIF}
+{$IFDEF COMPILER18} {$DEFINE COMPILER18_UP} {$ENDIF}
+{$IFDEF COMPILER17} {$DEFINE COMPILER17_UP} {$ENDIF}
+{$IFDEF COMPILER16} {$DEFINE COMPILER16_UP} {$ENDIF}
+{$IFDEF COMPILER15} {$DEFINE COMPILER15_UP} {$ENDIF}
+{$IFDEF COMPILER14} {$DEFINE COMPILER14_UP} {$ENDIF}
+{$IFDEF COMPILER12} {$DEFINE COMPILER12_UP} {$ENDIF}
+{$IFDEF COMPILER11} {$DEFINE COMPILER11_UP} {$ENDIF}
+{$IFDEF COMPILER10} {$DEFINE COMPILER10_UP} {$ENDIF}
+{$IFDEF COMPILER9} {$DEFINE COMPILER9_UP} {$ENDIF}
+{$IFDEF COMPILER8} {$DEFINE COMPILER8_UP} {$ENDIF}
+{$IFDEF COMPILER7} {$DEFINE COMPILER7_UP} {$ENDIF}
+{$IFDEF COMPILER6} {$DEFINE COMPILER6_UP} {$ENDIF}
+{$IFDEF COMPILER5} {$DEFINE COMPILER5_UP} {$ENDIF}
+{$IFDEF COMPILER4} {$DEFINE COMPILER4_UP} {$ENDIF}
+{$IFDEF COMPILER35} {$DEFINE COMPILER35_UP} {$ENDIF}
+{$IFDEF COMPILER3} {$DEFINE COMPILER3_UP} {$ENDIF}
+{$IFDEF COMPILER2} {$DEFINE COMPILER2_UP} {$ENDIF}
+{$IFDEF COMPILER1} {$DEFINE COMPILER1_UP} {$ENDIF}
+
+{------------------------------------------------------------------------------}
+{ COMPILERX_UP from COMPILERX_UP mappings }
+{------------------------------------------------------------------------------}
+
+{$IFDEF COMPILER27_UP} {$DEFINE COMPILER26_UP} {$ENDIF}
+{$IFDEF COMPILER26_UP} {$DEFINE COMPILER25_UP} {$ENDIF}
+{$IFDEF COMPILER25_UP} {$DEFINE COMPILER24_UP} {$ENDIF}
+{$IFDEF COMPILER24_UP} {$DEFINE COMPILER23_UP} {$ENDIF}
+{$IFDEF COMPILER23_UP} {$DEFINE COMPILER22_UP} {$ENDIF}
+{$IFDEF COMPILER22_UP} {$DEFINE COMPILER21_UP} {$ENDIF}
+{$IFDEF COMPILER21_UP} {$DEFINE COMPILER20_UP} {$ENDIF}
+{$IFDEF COMPILER20_UP} {$DEFINE COMPILER19_UP} {$ENDIF}
+{$IFDEF COMPILER19_UP} {$DEFINE COMPILER18_UP} {$ENDIF}
+{$IFDEF COMPILER18_UP} {$DEFINE COMPILER17_UP} {$ENDIF}
+{$IFDEF COMPILER17_UP} {$DEFINE COMPILER16_UP} {$ENDIF}
+{$IFDEF COMPILER16_UP} {$DEFINE COMPILER15_UP} {$ENDIF}
+{$IFDEF COMPILER15_UP} {$DEFINE COMPILER14_UP} {$ENDIF}
+{$IFDEF COMPILER14_UP} {$DEFINE COMPILER12_UP} {$ENDIF}
+{$IFDEF COMPILER12_UP} {$DEFINE COMPILER11_UP} {$ENDIF}
+{$IFDEF COMPILER11_UP} {$DEFINE COMPILER10_UP} {$ENDIF}
+{$IFDEF COMPILER10_UP} {$DEFINE COMPILER9_UP} {$ENDIF}
+{$IFDEF COMPILER9_UP} {$DEFINE COMPILER8_UP} {$ENDIF}
+{$IFDEF COMPILER8_UP} {$DEFINE COMPILER7_UP} {$ENDIF}
+{$IFDEF COMPILER7_UP} {$DEFINE COMPILER6_UP} {$ENDIF}
+{$IFDEF COMPILER6_UP} {$DEFINE COMPILER5_UP} {$ENDIF}
+{$IFDEF COMPILER5_UP} {$DEFINE COMPILER4_UP} {$ENDIF}
+{$IFDEF COMPILER4_UP} {$DEFINE COMPILER35_UP} {$ENDIF}
+{$IFDEF COMPILER35_UP} {$DEFINE COMPILER3_UP} {$ENDIF}
+{$IFDEF COMPILER3_UP} {$DEFINE COMPILER2_UP} {$ENDIF}
+{$IFDEF COMPILER2_UP} {$DEFINE COMPILER1_UP} {$ENDIF}
+
+{------------------------------------------------------------------------------}
+{ RTLX_UP from RTLX_UP mappings }
+{------------------------------------------------------------------------------}
+
+{$IFDEF RTL340_UP} {$DEFINE RTL330_UP} {$ENDIF}
+{$IFDEF RTL330_UP} {$DEFINE RTL320_UP} {$ENDIF}
+{$IFDEF RTL320_UP} {$DEFINE RTL310_UP} {$ENDIF}
+{$IFDEF RTL310_UP} {$DEFINE RTL300_UP} {$ENDIF}
+{$IFDEF RTL300_UP} {$DEFINE RTL290_UP} {$ENDIF}
+{$IFDEF RTL290_UP} {$DEFINE RTL280_UP} {$ENDIF}
+{$IFDEF RTL280_UP} {$DEFINE RTL270_UP} {$ENDIF}
+{$IFDEF RTL270_UP} {$DEFINE RTL260_UP} {$ENDIF}
+{$IFDEF RTL260_UP} {$DEFINE RTL250_UP} {$ENDIF}
+{$IFDEF RTL250_UP} {$DEFINE RTL240_UP} {$ENDIF}
+{$IFDEF RTL240_UP} {$DEFINE RTL230_UP} {$ENDIF}
+{$IFDEF RTL230_UP} {$DEFINE RTL220_UP} {$ENDIF}
+{$IFDEF RTL220_UP} {$DEFINE RTL210_UP} {$ENDIF}
+{$IFDEF RTL210_UP} {$DEFINE RTL200_UP} {$ENDIF}
+{$IFDEF RTL200_UP} {$DEFINE RTL190_UP} {$ENDIF}
+{$IFDEF RTL190_UP} {$DEFINE RTL185_UP} {$ENDIF}
+{$IFDEF RTL185_UP} {$DEFINE RTL180_UP} {$ENDIF}
+{$IFDEF RTL180_UP} {$DEFINE RTL170_UP} {$ENDIF}
+{$IFDEF RTL170_UP} {$DEFINE RTL160_UP} {$ENDIF}
+{$IFDEF RTL160_UP} {$DEFINE RTL150_UP} {$ENDIF}
+{$IFDEF RTL150_UP} {$DEFINE RTL145_UP} {$ENDIF}
+{$IFDEF RTL145_UP} {$DEFINE RTL142_UP} {$ENDIF}
+{$IFDEF RTL142_UP} {$DEFINE RTL140_UP} {$ENDIF}
+{$IFDEF RTL140_UP} {$DEFINE RTL130_UP} {$ENDIF}
+{$IFDEF RTL130_UP} {$DEFINE RTL125_UP} {$ENDIF}
+{$IFDEF RTL125_UP} {$DEFINE RTL120_UP} {$ENDIF}
+{$IFDEF RTL120_UP} {$DEFINE RTL110_UP} {$ENDIF}
+{$IFDEF RTL110_UP} {$DEFINE RTL100_UP} {$ENDIF}
+{$IFDEF RTL100_UP} {$DEFINE RTL93_UP} {$ENDIF}
+{$IFDEF RTL93_UP} {$DEFINE RTL90_UP} {$ENDIF}
+{$IFDEF RTL90_UP} {$DEFINE RTL80_UP} {$ENDIF}
+
+
+{$IFDEF FPC}
+ {$DEFINE RTL_270_OR_FPC}
+ {$DEFINE RTL_230_OR_FPC}
+ {$DEFINE RTL_220_OR_FPC}
+ {$DEFINE RTL_200_OR_FPC}
+ {$if Defined(FPC) and (FPC_FULLVERSION>= 30101)}
+ {$DEFINE RTL_220_OR_NEW_FPC} //New FPC
+ {$DEFINE RTL_200_OR_NEW_FPC} //New FPC
+ {$ELSE}
+ {$DEFINE RTL_OLD} //Old FPC
+ {$ENDIF}
+{$ELSE}
+ {$IFDEF RTL200_UP}
+ {$DEFINE RTL_200_OR_FPC}
+ {$ENDIF}
+ {$IFDEF RTL220_UP}
+ {$DEFINE RTL_220_OR_FPC}
+ {$DEFINE RTL_220_OR_NEW_FPC}
+ {$ENDIF}
+{$ENDIF}
+
+{------------------------------------------------------------------------------}
+{ Check for CLR overrides of default detection }
+{------------------------------------------------------------------------------}
+
+{$IFDEF CLR}
+ {$IFDEF FORCE_CLR10}
+ {$DEFINE CLR10}
+ {$UNDEF CLR11}
+ {$UNDEF CLR20}
+ {$ENDIF FORCE_CLR10}
+
+ {$IFDEF FORCE_CLR11}
+ {$UNDEF CLR10}
+ {$DEFINE CLR11}
+ {$UNDEF CLR20}
+ {$ENDIF FORCE_CLR11}
+
+ {$IFDEF FORCE_CLR20}
+ {$UNDEF CLR10}
+ {$UNDEF CLR11}
+ {$DEFINE CLR20}
+ {$ENDIF FORCE_CLR20}
+{$ENDIF CLR}
+
+{------------------------------------------------------------------------------}
+{ CLRX from CLRX_UP mappings }
+{------------------------------------------------------------------------------}
+
+{$IFDEF CLR10} {$DEFINE CLR10_UP} {$ENDIF}
+{$IFDEF CLR11} {$DEFINE CLR11_UP} {$ENDIF}
+{$IFDEF CLR20} {$DEFINE CLR20_UP} {$ENDIF}
+
+{------------------------------------------------------------------------------}
+{ CLRX_UP from CLRX_UP mappings }
+{------------------------------------------------------------------------------}
+
+{$IFDEF CLR20_UP} {$DEFINE CLR11_UP} {$ENDIF}
+{$IFDEF CLR11_UP} {$DEFINE CLR10_UP} {$ENDIF}
+
+{------------------------------------------------------------------------------}
+
+{$IFDEF DELPHICOMPILER}
+ {$DEFINE DELPHILANGUAGE}
+{$ENDIF}
+
+{$IFDEF BCBCOMPILER}
+ {$DEFINE DELPHILANGUAGE}
+{$ENDIF}
+
+{------------------------------------------------------------------------------}
+{ KYLIXX_UP from KYLIXX mappings }
+{------------------------------------------------------------------------------}
+
+{$IFDEF KYLIX3} {$DEFINE KYLIX3_UP} {$ENDIF}
+{$IFDEF KYLIX2} {$DEFINE KYLIX2_UP} {$ENDIF}
+{$IFDEF KYLIX1} {$DEFINE KYLIX1_UP} {$ENDIF}
+
+{------------------------------------------------------------------------------}
+{ KYLIXX_UP from KYLIXX_UP mappings }
+{------------------------------------------------------------------------------}
+
+{$IFDEF KYLIX3_UP} {$DEFINE KYLIX2_UP} {$ENDIF}
+{$IFDEF KYLIX2_UP} {$DEFINE KYLIX1_UP} {$ENDIF}
+
+{------------------------------------------------------------------------------}
+{ Map COMPILERX_UP to friendly feature names }
+{------------------------------------------------------------------------------}
+
+{$IFDEF FPC}
+ {$IFDEF VER1_0}
+ Please use FPC 2.0 or higher to compile this.
+ {$ELSE}
+ { FPC_FULLVERSION is available from 2.2.4 on }
+
+ {$DEFINE THREADSAFE}
+ {$DEFINE SUPPORTS_OUTPARAMS}
+ {$DEFINE SUPPORTS_WIDECHAR}
+ {$DEFINE SUPPORTS_WIDESTRING}
+ {$IF DEFINED(VER2_0) OR DEFINED(VER2_1)}
+ {$IFDEF HASINTF}
+ {$DEFINE SUPPORTS_INTERFACE}
+ {$ENDIF}
+ {$IFDEF HASVARIANT}
+ {$DEFINE SUPPORTS_VARIANT}
+ {$ENDIF}
+ {$IFDEF HASCURRENCY}
+ {$DEFINE SUPPORTS_CURRENCY}
+ {$ENDIF}
+ {$ELSE}
+ {$DEFINE SUPPORTS_INTERFACE}
+ {$DEFINE SUPPORTS_VARIANT}
+ {$DEFINE SUPPORTS_CURRENCY}
+ {$IFEND}
+ {$IFDEF FPC_HAS_TYPE_SINGLE}
+ {$DEFINE SUPPORTS_SINGLE}
+ {$ENDIF}
+ {$IFDEF FPC_HAS_TYPE_DOUBLE}
+ {$DEFINE SUPPORTS_DOUBLE}
+ {$ENDIF}
+ {$IFDEF FPC_HAS_TYPE_EXTENDED}
+ {$DEFINE SUPPORTS_EXTENDED}
+ {$ENDIF}
+ {$DEFINE SUPPORTS_THREADVAR}
+ {$DEFINE SUPPORTS_CONSTPARAMS}
+ {$DEFINE SUPPORTS_LONGWORD}
+ {$DEFINE SUPPORTS_INT64}
+ {$DEFINE SUPPORTS_DYNAMICARRAYS}
+ {$DEFINE SUPPORTS_DEFAULTPARAMS}
+ {$DEFINE SUPPORTS_OVERLOAD}
+ {$DEFINE ACCEPT_DEPRECATED} // 2.2 also gives warnings
+ {$DEFINE ACCEPT_PLATFORM} // 2.2 also gives warnings
+ {$DEFINE ACCEPT_LIBRARY}
+ {$DEFINE SUPPORTS_DEPRECATED}
+ {$DEFINE SUPPORTS_PLATFORM}
+ {$DEFINE SUPPORTS_LIBRARY}
+ {$DEFINE SUPPORTS_DEPRECATED_WARNINGS}
+ {$DEFINE SUPPORTS_PLATFORM_WARNINGS}
+ {$DEFINE SUPPORTS_EXTSYM}
+ {$DEFINE SUPPORTS_NODEFINE}
+ {$DEFINE SUPPORTS_DISPINTERFACE}
+ {$DEFINE SUPPORTS_IMPLEMENTS}
+ {$DEFINE SUPPORTS_DISPID}
+ {$DEFINE SUPPORTS_INLINE}
+ {$DEFINE SUPPORTS_STATIC}
+ {$DEFINE SUPPORTS_COMPILETIME_MESSAGES}
+
+ {$DEFINE SUPPORTS_CUSTOMVARIANTS}
+ {$DEFINE SUPPORTS_VARARGS}
+ {$DEFINE SUPPORTS_ENUMVALUE}
+ {$IFDEF LINUX}
+ {$DEFINE HAS_UNIT_LIBC}
+ {$ENDIF LINUX}
+ {$DEFINE HAS_UNIT_CONTNRS}
+ {$DEFINE HAS_UNIT_TYPES}
+ {$DEFINE HAS_UNIT_VARIANTS}
+ {$DEFINE HAS_UNIT_STRUTILS}
+ {$DEFINE HAS_UNIT_DATEUTILS}
+ {$DEFINE HAS_UNIT_RTLCONSTS}
+
+ {$DEFINE XPLATFORM_RTL}
+
+ {$IF DEFINED(FPC_FULLVERSION)}
+ { 2.2.4 or newer }
+
+ {$DEFINE SUPPORTS_SETPEFLAGS}
+ {$DEFINE SUPPORTS_STRICT}
+
+ {$IF defined(FPC_FULLVERSION) and (FPC_FULLVERSION >= 20400)}
+ {$DEFINE SUPPORTS_UINT64}
+ {$DEFINE SUPPORTS_EXPERIMENTAL_WARNINGS}
+ {$DEFINE SUPPORTS_REGION}
+ {$DEFINE SUPPORTS_UNICODE_STRING}
+ {$IFEND}
+
+ {$IF defined(FPC_FULLVERSION) and (FPC_FULLVERSION >= 20402)}
+ {$DEFINE SUPPORTS_FOR_IN}
+ {$IFEND}
+
+ {$IF defined(FPC_FULLVERSION) and (FPC_FULLVERSION >= 20600)}
+ {$DEFINE SUPPORTS_LIBRARY_WARNINGS}
+ {$DEFINE SUPPORTS_DEPRECATED_DETAILS}
+ {$DEFINE SUPPORTS_NESTED_TYPES}
+ {$DEFINE SUPPORTS_NESTED_CONSTANTS}
+ {$DEFINE SUPPORTS_ENHANCED_RECORDS} // called Advanced Records in FPC
+ {$DEFINE SUPPORTS_CLASS_FIELDS}
+ {$DEFINE SUPPORTS_CLASS_HELPERS}
+ {$DEFINE SUPPORTS_CLASS_OPERATORS}
+ {$DEFINE SUPPORTS_CLASS_CTORDTORS}
+ {$DEFINE SUPPORTS_FINAL}
+ {$DEFINE SUPPORTS_CAST_INTERFACE_TO_OBJ}
+
+ {$DEFINE HAS_ENOTIMPLEMENTED}
+ {$IFEND}
+
+ {$IF defined(FPC_FULLVERSION) and (FPC_FULLVERSION >= 20602)}
+ {$DEFINE SUPPORTS_INT_ALIASES}
+
+ {$DEFINE HAS_EARGUMENTEXCEPTION}
+ {$IFEND}
+
+ {$IF defined(FPC_FULLVERSION) and (FPC_FULLVERSION >= 30000)}
+ {$DEFINE SUPPORTS_GENERICS}
+ {$DEFINE SUPPORTS_GENERIC_TYPES}
+
+ {$DEFINE HAS_UNIT_CHARACTER}
+ {$IFEND}
+
+ {$IF defined(FPC_FULLVERSION) and (FPC_FULLVERSION >= 30200)}
+ {$DEFINE SUPPORTS_GENERIC_METHODS}
+ {$DEFINE SUPPORTS_GENERIC_ROUTINES}
+ {$DEFINE SUPPORTS_WEAKPACKAGEUNIT}
+
+ {$DEFINE HAS_UNIT_RTTI}
+ {$DEFINE HAS_UNIT_SYSTEM_UITYPES}
+ {$IFEND}
+ {$ELSE}
+ { older than 2.2.4 }
+
+ {$IFDEF VER2_2}
+ {$SUPPORTS_SETPEFLAGS}
+ {$SUPPORTS_STRICT}
+ {$ENDIF}
+ {$IFEND}
+ {$ENDIF}
+{$ENDIF FPC}
+
+{$IFDEF CLR}
+ {$DEFINE SUPPORTS_UNICODE}
+{$ENDIF CLR}
+
+{$IFDEF COMPILER1_UP}
+ {$DEFINE SUPPORTS_CONSTPARAMS}
+ {$DEFINE SUPPORTS_SINGLE}
+ {$DEFINE SUPPORTS_DOUBLE}
+ {$DEFINE SUPPORTS_EXTENDED}
+ {$DEFINE SUPPORTS_PACKAGES}
+{$ENDIF COMPILER1_UP}
+
+{$IFDEF COMPILER2_UP}
+ {$DEFINE SUPPORTS_CURRENCY}
+ {$DEFINE SUPPORTS_THREADVAR}
+ {$DEFINE SUPPORTS_VARIANT}
+ {$DEFINE SUPPORTS_WIDECHAR}
+{$ENDIF COMPILER2_UP}
+
+{$IFDEF COMPILER3_UP}
+ {$DEFINE SUPPORTS_OUTPARAMS}
+ {$DEFINE SUPPORTS_WIDESTRING}
+ {$DEFINE SUPPORTS_INTERFACE}
+ {$DEFINE SUPPORTS_DISPINTERFACE}
+ {$DEFINE SUPPORTS_DISPID}
+ {$DEFINE SUPPORTS_WEAKPACKAGEUNIT}
+{$ENDIF COMPILER3_UP}
+
+{$IFDEF COMPILER35_UP}
+ {$DEFINE SUPPORTS_EXTSYM}
+ {$DEFINE SUPPORTS_NODEFINE}
+{$ENDIF COMPILER35_UP}
+
+{$IFDEF COMPILER4_UP}
+ {$DEFINE SUPPORTS_LONGWORD}
+ {$DEFINE SUPPORTS_INT64}
+ {$DEFINE SUPPORTS_DYNAMICARRAYS}
+ {$DEFINE SUPPORTS_DEFAULTPARAMS}
+ {$DEFINE SUPPORTS_OVERLOAD}
+ {$DEFINE SUPPORTS_IMPLEMENTS}
+{$ENDIF COMPILER4_UP}
+
+{$IFDEF COMPILER6_UP}
+ {$DEFINE SUPPORTS_DEPRECATED}
+ {$DEFINE SUPPORTS_LIBRARY}
+ {$DEFINE SUPPORTS_PLATFORM}
+ {$DEFINE SUPPORTS_LOCAL}
+ {$DEFINE SUPPORTS_SETPEFLAGS}
+ {$DEFINE SUPPORTS_EXPERIMENTAL_WARNINGS}
+ {$DEFINE ACCEPT_DEPRECATED}
+ {$DEFINE ACCEPT_PLATFORM}
+ {$DEFINE ACCEPT_LIBRARY}
+ {$DEFINE SUPPORTS_DEPRECATED_WARNINGS}
+ {$DEFINE SUPPORTS_LIBRARY_WARNINGS}
+ {$DEFINE SUPPORTS_PLATFORM_WARNINGS}
+ {$DEFINE SUPPORTS_CUSTOMVARIANTS}
+ {$DEFINE SUPPORTS_VARARGS}
+ {$DEFINE SUPPORTS_ENUMVALUE}
+ {$DEFINE SUPPORTS_COMPILETIME_MESSAGES}
+{$ENDIF COMPILER6_UP}
+
+{$IFDEF COMPILER7_UP}
+ {$DEFINE SUPPORTS_UNSAFE_WARNINGS}
+ {$DEFINE SUPPORTS_UINT64}
+{$ENDIF COMPILER7_UP}
+
+{$IFDEF COMPILER9_UP}
+ {$DEFINE SUPPORTS_FOR_IN}
+ {$DEFINE SUPPORTS_INLINE}
+ {$DEFINE SUPPORTS_NESTED_CONSTANTS}
+ {$DEFINE SUPPORTS_NESTED_TYPES}
+ {$DEFINE SUPPORTS_REGION}
+ {$IFDEF CLR}
+ {$DEFINE SUPPORTS_ENHANCED_RECORDS}
+ {$DEFINE SUPPORTS_CLASS_FIELDS}
+ {$DEFINE SUPPORTS_CLASS_HELPERS}
+ {$DEFINE SUPPORTS_CLASS_OPERATORS}
+ {$DEFINE SUPPORTS_STRICT}
+ {$DEFINE SUPPORTS_STATIC}
+ {$DEFINE SUPPORTS_FINAL}
+ {$ENDIF CLR}
+{$ENDIF COMPILER9_UP}
+
+{$IFDEF COMPILER10_UP}
+ {$DEFINE SUPPORTS_ENHANCED_RECORDS}
+ {$DEFINE SUPPORTS_CLASS_FIELDS}
+ {$DEFINE SUPPORTS_CLASS_HELPERS}
+ {$DEFINE SUPPORTS_CLASS_OPERATORS}
+ {$DEFINE SUPPORTS_STRICT}
+ {$DEFINE SUPPORTS_STATIC}
+ {$DEFINE SUPPORTS_FINAL}
+ {$DEFINE SUPPORTS_METHODINFO}
+{$ENDIF COMPILER10_UP}
+
+{$IFDEF COMPILER11_UP}
+ {$IFDEF CLR}
+ {$DEFINE SUPPORTS_GENERICS}
+ {$DEFINE SUPPORTS_GENERIC_TYPES}
+ {$DEFINE SUPPORTS_GENERIC_METHODS}
+ {$DEFINE SUPPORTS_DEPRECATED_DETAILS}
+ {$ENDIF CLR}
+{$ENDIF COMPILER11_UP}
+
+{$IFDEF COMPILER12_UP}
+ {$DEFINE SUPPORTS_GENERICS}
+ {$DEFINE SUPPORTS_GENERIC_TYPES}
+ {$DEFINE SUPPORTS_GENERIC_METHODS}
+ {$DEFINE SUPPORTS_DEPRECATED_DETAILS}
+ {$DEFINE SUPPORTS_INT_ALIASES}
+ {$IFNDEF CLR}
+ {$DEFINE SUPPORTS_UNICODE}
+ {$DEFINE SUPPORTS_UNICODE_STRING}
+ {$ENDIF CLR}
+{$ENDIF COMPILER12_UP}
+
+{$IFDEF COMPILER14_UP}
+ {$DEFINE SUPPORTS_CLASS_CTORDTORS}
+ {$DEFINE HAS_UNIT_RTTI}
+ {$DEFINE SUPPORTS_CAST_INTERFACE_TO_OBJ}
+ {$DEFINE SUPPORTS_DELAYED_LOADING}
+{$ENDIF COMPILER14_UP}
+
+{$IFDEF COMPILER16_UP}
+ {$DEFINE USE_64BIT_TYPES}
+{$ENDIF COMPILER16_UP}
+
+{$IFDEF COMPILER17_UP}
+ {$DEFINE SUPPORTS_LEGACYIFEND}
+{$ENDIF COMPILER17_UP}
+
+{$IFDEF RTL130_UP}
+ {$DEFINE HAS_UNIT_CONTNRS}
+{$ENDIF RTL130_UP}
+
+{$IFDEF RTL140_UP}
+ {$IFDEF LINUX}
+ {$DEFINE HAS_UNIT_LIBC}
+ {$ENDIF LINUX}
+ {$DEFINE HAS_UNIT_RTLCONSTS}
+ {$DEFINE HAS_UNIT_TYPES}
+ {$DEFINE HAS_UNIT_VARIANTS}
+ {$DEFINE HAS_UNIT_STRUTILS}
+ {$DEFINE HAS_UNIT_DATEUTILS}
+ {$DEFINE XPLATFORM_RTL}
+{$ENDIF RTL140_UP}
+
+{$IFDEF RTL150_UP}
+ {$DEFINE HAS_UNIT_UXTHEME}
+{$ENDIF RTL150_UP}
+
+{$IFDEF RTL170_UP}
+ {$DEFINE HAS_UNIT_HTTPPROD}
+{$ENDIF RTL170_UP}
+
+{$IFDEF RTL185_UP}
+ {$DEFINE HAS_UNIT_GIFIMG}
+{$ENDIF RTL185_UP}
+
+{$IFDEF RTL200_UP}
+ {$DEFINE HAS_UNIT_ANSISTRINGS}
+ {$DEFINE HAS_UNIT_PNGIMAGE}
+ {$DEFINE HAS_UNIT_CHARACTER}
+ {$DEFINE HAS_EXCEPTION_STACKTRACE}
+{$ENDIF RTL200_UP}
+
+{$IFDEF RTL210_UP}
+ {$DEFINE HAS_EARGUMENTEXCEPTION}
+{$ENDIF RTL210_UP}
+
+{$IFDEF RTL220_UP}
+ {$DEFINE HAS_UNIT_REGULAREXPRESSIONSAPI}
+ {$DEFINE HAS_ENOTIMPLEMENTED}
+{$ENDIF RTL220_UP}
+
+{$IFDEF RTL230_UP}
+ {$DEFINE HAS_UNITSCOPE}
+ {$DEFINE HAS_UNIT_SYSTEM_UITYPES}
+ {$DEFINE HAS_UNIT_VCL_THEMES}
+ {$DEFINE RTL_230_OR_FPC}
+{$ENDIF RTL230_UP}
+
+{$IFDEF RTL240_UP}
+ {$DEFINE HAS_UNIT_SYSTEM_ACTIONS}
+ {$DEFINE HAS_PROPERTY_STYLEELEMENTS}
+{$ENDIF RTL240_UP}
+
+{$IFDEF RTL250_UP}
+ {$DEFINE DEPRECATED_SYSUTILS_ANSISTRINGS}
+ {$DEFINE DEPRECATED_TCHARACTER}
+{$ENDIF RTL250_UP}
+
+{$IFDEF RTL270_UP}
+ {$DEFINE HAS_AUTOMATIC_DB_FIELDS}
+{$ENDIF RTL270_UP}
+
+{------------------------------------------------------------------------------}
+{ Cross-platform related defines }
+{------------------------------------------------------------------------------}
+
+{$IFNDEF CPUASM}
+ {$DEFINE PUREPASCAL}
+{$ENDIF ~CPUASM}
+
+{$IFDEF WIN32}
+ {$DEFINE MSWINDOWS} // predefined for D6+/BCB6+
+ {$DEFINE Win32API}
+{$ENDIF}
+
+{$IFDEF DELPHILANGUAGE}
+ {$IFDEF LINUX}
+ {$DEFINE UNIX}
+ {$ENDIF}
+
+ {$IFNDEF CONSOLE}
+ {$IFDEF LINUX}
+ {$DEFINE VisualCLX}
+ {$ENDIF}
+ {$IFNDEF VisualCLX}
+ {$DEFINE VCL}
+ {$ENDIF}
+ {$ENDIF ~CONSOLE}
+{$ENDIF DELPHILANGUAGE}
+
+{------------------------------------------------------------------------------}
+{ Compiler settings }
+{------------------------------------------------------------------------------}
+
+{$IFOPT A+} {$DEFINE ALIGN_ON} {$ENDIF}
+{$IFOPT B+} {$DEFINE BOOLEVAL_ON} {$ENDIF}
+{$IFDEF COMPILER2_UP}
+ {$IFOPT C+} {$DEFINE ASSERTIONS_ON} {$ENDIF}
+{$ENDIF}
+{$IFOPT D+} {$DEFINE DEBUGINFO_ON} {$ENDIF}
+{$IFOPT G+} {$DEFINE IMPORTEDDATA_ON} {$ENDIF}
+{$IFDEF COMPILER2_UP}
+ {$IFOPT H+} {$DEFINE LONGSTRINGS_ON} {$ENDIF}
+{$ENDIF}
+
+// Hints
+{$IFOPT I+} {$DEFINE IOCHECKS_ON} {$ENDIF}
+{$IFDEF COMPILER2_UP}
+ {$IFOPT J+} {$DEFINE WRITEABLECONST_ON} {$ENDIF}
+{$ENDIF}
+{$IFOPT L+} {$DEFINE LOCALSYMBOLS} {$DEFINE LOCALSYMBOLS_ON} {$ENDIF}
+{$IFOPT M+} {$DEFINE TYPEINFO_ON} {$ENDIF}
+{$IFOPT O+} {$DEFINE OPTIMIZATION_ON} {$ENDIF}
+{$IFOPT P+} {$DEFINE OPENSTRINGS_ON} {$ENDIF}
+{$IFOPT Q+} {$DEFINE OVERFLOWCHECKS_ON} {$ENDIF}
+{$IFOPT R+} {$DEFINE RANGECHECKS_ON} {$ENDIF}
+
+// Real compatibility
+{$IFOPT T+} {$DEFINE TYPEDADDRESS_ON} {$ENDIF}
+{$IFOPT U+} {$DEFINE SAFEDIVIDE_ON} {$ENDIF}
+{$IFOPT V+} {$DEFINE VARSTRINGCHECKS_ON} {$ENDIF}
+{$IFOPT W+} {$DEFINE STACKFRAMES_ON} {$ENDIF}
+
+// Warnings
+{$IFOPT X+} {$DEFINE EXTENDEDSYNTAX_ON} {$ENDIF}
+
+// for Delphi/BCB trial versions remove the point from the line below
+{.$UNDEF SUPPORTS_WEAKPACKAGEUNIT}
+
+{$ENDIF ~JEDI_INC}
\ No newline at end of file
diff --git a/ssl_openssl.pas b/ssl_openssl.pas
index 845b4e3..11fb16b 100644
--- a/ssl_openssl.pas
+++ b/ssl_openssl.pas
@@ -1012,7 +1012,7 @@ function TSSLOpenSSL.GetVerifyCert: integer;
{==============================================================================}
initialization
-// if InitSSLInterface then
+ if InitSSLInterface then
SSLImplementation := TSSLOpenSSL;
end.
diff --git a/synautil.pas b/synautil.pas
index ac2c548..3bd6a93 100644
--- a/synautil.pas
+++ b/synautil.pas
@@ -102,6 +102,7 @@ interface
type
int64 = integer;
{$ENDIF}
+
{$IFDEF POSIX}
type
TTimeVal = Posix.SysTime.timeval;
@@ -181,11 +182,11 @@ function SetUTTime(Newdt: TDateTime): Boolean;
{:Return current value of system timer with precizion 1 millisecond. Good for
measure time difference.}
-function GetTick: FixedUInt;
+function GetTick: UInt32;
{:Return difference between two timestamps. It working fine only for differences
smaller then maxint. (difference must be smaller then 24 days.)}
-function TickDelta(TickOld, TickNew: FixedUInt): FixedUInt;
+function TickDelta(TickOld, TickNew: UInt32): UInt32;
{:Return two characters, which ordinal values represents the value in byte
format. (High-endian)}
@@ -910,7 +911,7 @@ function SetUTTime(Newdt: TDateTime): Boolean;
{==============================================================================}
{$IFNDEF MSWINDOWS}
-function GetTick: FixedUInt;
+function GetTick: UInt32;
var
Stamp: TTimeStamp;
begin
@@ -918,7 +919,7 @@ function GetTick: FixedUInt;
Result := Stamp.Time;
end;
{$ELSE}
-function GetTick: FixedUInt;
+function GetTick: UInt32;
var
tick, freq: TLargeInteger;
{$IFDEF VER100}
@@ -932,7 +933,7 @@ function GetTick: FixedUInt;
x.QuadPart := (tick.QuadPart / freq.QuadPart) * 1000;
Result := x.LowPart;
{$ELSE}
- Result := Trunc((tick / freq) * 1000) and High(FixedUInt)
+ Result := Trunc((tick / freq) * 1000) and High(UInt32)
{$ENDIF}
end
else
@@ -942,7 +943,7 @@ function GetTick: FixedUInt;
{==============================================================================}
-function TickDelta(TickOld, TickNew: FixedUInt): FixedUInt;
+function TickDelta(TickOld, TickNew: UInt32): UInt32;
begin
//if DWord is signed type (older Deplhi),
// then it not work properly on differencies larger then maxint!
@@ -951,8 +952,8 @@ function TickDelta(TickOld, TickNew: FixedUInt): FixedUInt;
begin
if TickNew < TickOld then
begin
- TickNew := TickNew + FixedUInt(MaxInt) + 1;
- TickOld := TickOld + FixedUInt(MaxInt) + 1;
+ TickNew := TickNew + UInt32(MaxInt) + 1;
+ TickOld := TickOld + UInt32(MaxInt) + 1;
end;
Result := TickNew - TickOld;
if TickNew < TickOld then