mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 11:53:42 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			236 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			236 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| {
 | |
|     This file is part of the Free Pascal run time library.
 | |
|     Copyright (c) 1999-2000 by Florian Klaempfl
 | |
|     member of the Free Pascal development team
 | |
| 
 | |
|     See the file COPYING.FPC, included in this distribution,
 | |
|     for details about the copyright.
 | |
| 
 | |
|     This program is distributed in the hope that it will be useful,
 | |
|     but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | |
| 
 | |
|  **********************************************************************}
 | |
| { Using inlining for small system functions/wrappers }
 | |
| {$inline on}
 | |
| {$define SYSUTILSINLINE}
 | |
| 
 | |
|   { Read date & Time function declarations }
 | |
|   {$i osutilsh.inc}
 | |
| 
 | |
|   {$i datih.inc}
 | |
| 
 | |
|   { Read String Handling functions declaration }
 | |
|   {$i sysstrh.inc}
 | |
| 
 | |
| type
 | |
|    { some helpful data types }
 | |
| 
 | |
|    THandle = System.THandle;
 | |
| 
 | |
|    TProcedure = procedure;
 | |
| 
 | |
|    TFilename = String;
 | |
| 
 | |
|    TIntegerSet = Set of 0..SizeOf(Integer)*8-1;
 | |
| 
 | |
|    LongRec = packed record
 | |
|       case Integer of
 | |
|         0 : (Lo,Hi : Word);
 | |
|         1 : (Bytes : Array[0..3] of Byte);
 | |
|    end;
 | |
| 
 | |
|    WordRec = packed record
 | |
|      Lo,Hi : Byte;
 | |
|    end;
 | |
| 
 | |
|    Int64Rec = packed record
 | |
|       case integer of
 | |
|         0 : (Lo,Hi : Cardinal);
 | |
|         1 : (Words : Array[0..3] of Word);
 | |
|         2 : (Bytes : Array[0..7] of Byte);
 | |
|    end;
 | |
| 
 | |
|    PByteArray = ^TByteArray;
 | |
|    TByteArray = Array[0..32767] of Byte;
 | |
| 
 | |
|    PWordarray = ^TWordArray;
 | |
|    TWordArray = array[0..16383] of Word;
 | |
| 
 | |
|    { exceptions }
 | |
|    Exception = class(TObject)
 | |
|     private
 | |
|       fmessage : string;
 | |
|       fhelpcontext : longint;
 | |
|     public
 | |
|       constructor Create(const msg : string);
 | |
|       constructor CreateFmt(const msg : string; const args : array of const);
 | |
|       constructor CreateRes(ResString: PString);
 | |
|       constructor CreateResFmt(ResString: PString; const Args: array of const);
 | |
|       constructor CreateHelp(const Msg: string; AHelpContext: Integer);
 | |
|       constructor CreateFmtHelp(const Msg: string; const Args: array of const;
 | |
|         AHelpContext: Integer);
 | |
|       constructor CreateResHelp(ResString: PString; AHelpContext: Integer);
 | |
|       constructor CreateResFmtHelp(ResString: PString; const Args: array of const;
 | |
|         AHelpContext: Integer);
 | |
|       { !!!! }
 | |
|       property HelpContext : longint read fhelpcontext write fhelpcontext;
 | |
|       property Message : string read fmessage write fmessage;
 | |
|    end;
 | |
| 
 | |
|    ExceptClass = class of Exception;
 | |
| 
 | |
|    EExternal = class(Exception)
 | |
|    public
 | |
| {$ifdef win32}
 | |
|      ExceptionRecord : PExceptionRecord;
 | |
| {$endif win32}
 | |
|    end;
 | |
| 
 | |
|    { integer math exceptions }
 | |
|    EInterror    = Class(EExternal);
 | |
|    EDivByZero   = Class(EIntError);
 | |
|    ERangeError  = Class(EIntError);
 | |
|    EIntOverflow = Class(EIntError);
 | |
| 
 | |
|    { General math errors }
 | |
|    EMathError  = Class(EExternal);
 | |
|    EInvalidOp  = Class(EMathError);
 | |
|    EZeroDivide = Class(EMathError);
 | |
|    EOverflow   = Class(EMathError);
 | |
|    EUnderflow  = Class(EMathError);
 | |
| 
 | |
|    { Run-time and I/O Errors }
 | |
|    EInOutError = class(Exception)
 | |
|      public
 | |
|        ErrorCode : Longint;
 | |
|    end;
 | |
| 
 | |
|    EHeapMemoryError = class(Exception)
 | |
|      protected
 | |
|        AllowFree : boolean;
 | |
|        procedure FreeInstance;override;
 | |
|    end;
 | |
| 
 | |
|    EHeapException = EHeapMemoryError;
 | |
| 
 | |
|    EExternalException = class(EExternal);
 | |
|    EInvalidPointer  = Class(EHeapMemoryError);
 | |
|    EOutOfMemory     = Class(EHeapMemoryError);
 | |
|    EInvalidCast = Class(Exception);
 | |
|    EVariantError = Class(Exception);
 | |
| 
 | |
|    EAccessViolation = Class(EExternal);
 | |
|    EPrivilege = class(EExternal);
 | |
|    EStackOverflow = class(EExternal);
 | |
|    EControlC = class(EExternal);
 | |
| 
 | |
|    { String conversion errors }
 | |
|    EConvertError = class(Exception);
 | |
|    EFormatError = class(Exception);
 | |
| 
 | |
|    { Other errors }
 | |
|    EAbort           = Class(Exception);
 | |
|    EAbstractError   = Class(Exception);
 | |
|    EAssertionFailed = Class(Exception);
 | |
| 
 | |
|    EPropReadOnly = class(Exception);
 | |
|    EPropWriteOnly = class(Exception);
 | |
| 
 | |
|    EIntfCastError = class(Exception);
 | |
|    EInvalidContainer = class(Exception);
 | |
|    EInvalidInsert = class(Exception);
 | |
| 
 | |
|    EPackageError = class(Exception);
 | |
| 
 | |
|    EOSError = class(Exception)
 | |
|    public
 | |
|      ErrorCode: Longint;
 | |
|    end;
 | |
| 
 | |
|    ESafecallException = class(Exception);
 | |
|    ENoThreadSupport = Class(Exception);
 | |
| 
 | |
| 
 | |
|    { Exception handling routines }
 | |
|    function ExceptObject: TObject;
 | |
|    function ExceptAddr: Pointer;
 | |
|    function ExceptFrameCount: Longint;
 | |
|    function ExceptFrames: PPointer;
 | |
|    function ExceptionErrorMessage(ExceptObject: TObject; ExceptAddr: Pointer;
 | |
|                                   Buffer: PChar; Size: Integer): Integer;
 | |
|    procedure ShowException(ExceptObject: TObject; ExceptAddr: Pointer);
 | |
|    procedure Abort;
 | |
|    procedure OutOfMemoryError;
 | |
|    procedure Beep;
 | |
|    function SysErrorMessage(ErrorCode: Integer): String;
 | |
| 
 | |
| Type
 | |
|    TCreateGUIDFunc = Function(Out GUID : TGUID) : Integer;
 | |
| 
 | |
| Var
 | |
|    OnCreateGUID : TCreateGUIDFunc = Nil;
 | |
|   
 | |
|    Function CreateGUID(out GUID : TGUID) : Integer;
 | |
| 
 | |
| type
 | |
|   TTerminateProc = Function: Boolean;
 | |
| 
 | |
|   
 | |
| 
 | |
|   procedure AddTerminateProc(TermProc: TTerminateProc);
 | |
|   function CallTerminateProcs: Boolean;
 | |
| 
 | |
| 
 | |
| 
 | |
| Var
 | |
|    OnShowException : Procedure (Msg : ShortString);
 | |
| 
 | |
|   { FileRec/TextRec }
 | |
|   {$i filerec.inc}
 | |
|   {$i textrec.inc}
 | |
| 
 | |
| Const
 | |
|    HexDisplayPrefix : string = '$';
 | |
| 
 | |
| const
 | |
| // commenting is VP fix. These idents are in a different unit there.
 | |
|   PathDelim={System.}DirectorySeparator;
 | |
|   DriveDelim={System.}DriveSeparator;
 | |
|   PathSep={System.}PathSeparator;
 | |
|   MAX_PATH={System.}MaxPathLen;
 | |
| 
 | |
| Type
 | |
|    TFileRec=FileRec;
 | |
|    TTextRec=TextRec;
 | |
| 
 | |
|   { Read internationalization settings }
 | |
|   {$i sysinth.inc}
 | |
| 
 | |
|   { Read pchar handling functions declaration }
 | |
|   {$i syspchh.inc}
 | |
| 
 | |
|   { MCBS functions }
 | |
|   {$i sysansih.inc}
 | |
| 
 | |
|   { wide string functions }
 | |
|   {$i syswideh.inc}
 | |
| 
 | |
|   { Read filename handling functions declaration }
 | |
|   {$i finah.inc}
 | |
| 
 | |
|   { Read other file handling function declarations }
 | |
|   {$i filutilh.inc}
 | |
| 
 | |
|   { Read disk function declarations }
 | |
|   {$i diskh.inc}
 | |
| 
 | |
|   { read thread handling }
 | |
|   {$i systhrdh.inc}
 | |
| 
 | |
|   procedure FreeAndNil(var obj);
 | |
| 
 | |
|   { interface handling }
 | |
|   {$i intfh.inc}
 | |
| 
 | 
