123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371 |
- {********************[ COMMON UNIT ]***********************}
- { }
- { System independent COMMON TYPES & DEFINITIONS }
- { }
- { Parts Copyright (c) 1997 by Balazs Scheidler }
- { [email protected] }
- { }
- { Parts Copyright (c) 1999, 2000 by Leon de Boer }
- { [email protected] - primary e-mail address }
- { [email protected] - backup e-mail address }
- { }
- {****************[ THIS CODE IS FREEWARE ]*****************}
- { }
- { This sourcecode is released for the purpose to }
- { promote the pascal language on all platforms. You may }
- { redistribute it and/or modify with the following }
- { DISCLAIMER. }
- { }
- { This SOURCE CODE is distributed "AS IS" WITHOUT }
- { WARRANTIES AS TO PERFORMANCE OF MERCHANTABILITY OR }
- { ANY OTHER WARRANTIES WHETHER EXPRESSED OR IMPLIED. }
- { }
- {*****************[ SUPPORTED PLATFORMS ]******************}
- { 16 and 32 Bit compilers }
- { DOS - Turbo Pascal 7.0 + (16 Bit) }
- { DPMI - Turbo Pascal 7.0 + (16 Bit) }
- { - FPC 0.9912+ (GO32V2) (32 Bit) }
- { WINDOWS - Turbo Pascal 7.0 + (16 Bit) }
- { - Delphi 1.0+ (16 Bit) }
- { WIN95/NT - Delphi 2.0+ (32 Bit) }
- { - Virtual Pascal 2.0+ (32 Bit) }
- { - Speedsoft Sybil 2.0+ (32 Bit) }
- { - FPC 0.9912+ (32 Bit) }
- { OS2 - Virtual Pascal 1.0+ (32 Bit) }
- { - Speed Pascal 1.0+ (32 Bit) }
- { - C'T patch to BP (16 Bit) }
- { }
- {******************[ REVISION HISTORY ]********************}
- { Version Date Who Fix }
- { ------- -------- --- ---------------------------- }
- { 0.1 12 Jul 97 Bazsi Initial implementation }
- { 0.2 18 Jul 97 Bazsi Linux specific error codes }
- { 0.2.2 28 Jul 97 Bazsi Base error code for Video }
- { 0.2.3 29 Jul 97 Bazsi Basic types added (PByte etc) }
- { 0.2.5 08 Aug 97 Bazsi Error handling code added }
- { 0.2.6 06 Sep 97 Bazsi Base code for keyboard }
- { 0.2.7 06 Nov 97 Bazsi Base error code for filectrl }
- { 0.2.8 21 Jan 99 LdB Max data sizes added. }
- { 0.2.9 22 Jan 99 LdB General array types added. }
- { 0.3.0 27 Oct 99 LdB Delphi3+ MaxAvail, MemAvail }
- { 0.4.0 14 Nov 00 LdB Revamp of whole unit }
- {**********************************************************}
- UNIT FVCommon;
- {<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>}
- INTERFACE
- {<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>}
- {====Include file to sort compiler platform out =====================}
- {$I Platform.inc}
- {====================================================================}
- {$ifdef win32}
- uses
- Windows;
- {$endif}
- {***************************************************************************}
- { PUBLIC CONSTANTS }
- {***************************************************************************}
- {+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
- { SYSTEM ERROR BASE CONSTANTS }
- {+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
- {---------------------------------------------------------------------------}
- { The following ranges have been defined for error codes: }
- {---------------------------------------------------------------------------}
- { 0 - 1000 OS dependant error codes }
- { 1000 - 10000 API reserved error codes }
- { 10000 - Add-On unit error codes }
- {---------------------------------------------------------------------------}
- {---------------------------------------------------------------------------}
- { DEFINED BASE ERROR CONSTANTS }
- {---------------------------------------------------------------------------}
- CONST
- errOk = 0; { No error }
- errVioBase = 1000; { Video base offset }
- errKbdBase = 1010; { Keyboard base offset }
- errFileCtrlBase = 1020; { File IO base offset }
- errMouseBase = 1030; { Mouse base offset }
- {---------------------------------------------------------------------------}
- { MAXIUM DATA SIZES }
- {---------------------------------------------------------------------------}
- CONST
- {$IFDEF BIT_16} { 16 BIT DEFINITION }
- MaxBytes = 65520; { Maximum data size }
- {$ENDIF}
- {$IFDEF BIT_32} { 32 BIT DEFINITION }
- MaxBytes = 128*1024*1024; { Maximum data size }
- {$ENDIF}
- MaxWords = MaxBytes DIV SizeOf(Word); { Max words }
- MaxInts = MaxBytes DIV SizeOf(Integer); { Max integers }
- MaxLongs = MaxBytes DIV SizeOf(LongInt); { Max longints }
- MaxPtrs = MaxBytes DIV SizeOf(Pointer); { Max pointers }
- MaxReals = MaxBytes DIV SizeOf(Real); { Max reals }
- MaxStr = MaxBytes DIV SizeOf(String); { Max strings }
- {***************************************************************************}
- { PUBLIC TYPE DEFINITIONS }
- {***************************************************************************}
- {---------------------------------------------------------------------------}
- { CPU TYPE DEFINITIONS }
- {---------------------------------------------------------------------------}
- TYPE
- {$IFDEF BIT_32} { 32 BIT CODE }
- CPUWord = Longint; { CPUWord is 32 bit }
- CPUInt = Longint; { CPUInt is 32 bit }
- {$ELSE} { 16 BIT CODE }
- CPUWord = Word; { CPUWord is 16 bit }
- CPUInt = Integer; { CPUInt is 16 bit }
- {$ENDIF}
- {---------------------------------------------------------------------------}
- { 16/32 BIT SWITCHED TYPE CONSTANTS }
- {---------------------------------------------------------------------------}
- TYPE
- {$IFDEF BIT_16} { 16 BIT DEFINITIONS }
- Sw_Word = Word; { Standard word }
- Sw_Integer = Integer; { Standard integer }
- {$ENDIF}
- {$IFDEF BIT_32} { 32 BIT DEFINITIONS }
- Sw_Word = Cardinal; { Long integer now }
- Sw_Integer = LongInt; { Long integer now }
- {$ENDIF}
- {---------------------------------------------------------------------------}
- { GENERAL ARRAYS }
- {---------------------------------------------------------------------------}
- TYPE
- TByteArray = ARRAY [0..MaxBytes-1] Of Byte; { Byte array }
- PByteArray = ^TByteArray; { Byte array pointer }
- TWordArray = ARRAY [0..MaxWords-1] Of Word; { Word array }
- PWordArray = ^TWordArray; { Word array pointer }
- TIntegerArray = ARRAY [0..MaxInts-1] Of Integer; { Integer array }
- PIntegerArray = ^TIntegerArray; { Integer array pointer }
- TLongIntArray = ARRAY [0..MaxLongs-1] Of LongInt; { LongInt array }
- PLongIntArray = ^TLongIntArray; { LongInt array pointer }
- TRealArray = Array [0..MaxReals-1] Of Real; { Real array }
- PRealarray = ^TRealArray; { Real array pointer }
- TPointerArray = Array [0..MaxPtrs-1] Of Pointer; { Pointer array }
- PPointerArray = ^TPointerArray; { Pointer array ptr }
- TStrArray = Array [0..MaxStr-1] Of String; { String array }
- PStrArray = ^TStrArray; { String array ptr }
- {***************************************************************************}
- { INTERFACE ROUTINES }
- {***************************************************************************}
- {-GetErrorCode-------------------------------------------------------
- Returns the last error code and resets ErrorCode to errOk.
- 07/12/97 Bazsi
- ---------------------------------------------------------------------}
- FUNCTION GetErrorCode: LongInt;
- {-GetErrorInfo-------------------------------------------------------
- Returns the info assigned to the previous error, doesn't reset the
- value to nil. Would usually only be called if ErrorCode <> errOk.
- 07/12/97 Bazsi
- ---------------------------------------------------------------------}
- FUNCTION GetErrorInfo: Pointer;
- {+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
- { MINIMUM AND MAXIMUM ROUTINES }
- {+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
- FUNCTION Min (I, J: Sw_Integer): Sw_Integer;
- FUNCTION Max (I, J: Sw_Integer): Sw_Integer;
- {-MinimumOf----------------------------------------------------------
- Given two real numbers returns the minimum real of the two.
- 04Oct99 LdB
- ---------------------------------------------------------------------}
- FUNCTION MinimumOf (A, B: Real): Real;
- {-MaximumOf----------------------------------------------------------
- Given two real numbers returns the maximum real of the two.
- 04Oct99 LdB
- ---------------------------------------------------------------------}
- FUNCTION MaximumOf (A, B: Real): Real;
- {-MinIntegerOf-------------------------------------------------------
- Given two integer values returns the lowest integer of the two.
- 04Oct99 LdB
- ---------------------------------------------------------------------}
- FUNCTION MinIntegerOf (A, B: Integer): Integer;
- {-MaxIntegerof-------------------------------------------------------
- Given two integer values returns the biggest integer of the two.
- 04Oct99 LdB
- ---------------------------------------------------------------------}
- FUNCTION MaxIntegerOf (A, B: Integer): Integer;
- {-MinLongIntOf-------------------------------------------------------
- Given two long integers returns the minimum longint of the two.
- 04Oct99 LdB
- ---------------------------------------------------------------------}
- FUNCTION MinLongIntOf (A, B: LongInt): LongInt;
- {-MaxLongIntOf-------------------------------------------------------
- Given two long integers returns the maximum longint of the two.
- 04Oct99 LdB
- ---------------------------------------------------------------------}
- FUNCTION MaxLongIntOf (A, B: LongInt): LongInt;
- {+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
- { MISSING DELPHI3 ROUTINES }
- {+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
- { ******************************* REMARK ****************************** }
- { Delphi 3+ does not define these standard routines so I have made }
- { some public functions here to complete compatability. }
- { ****************************** END REMARK *** Leon de Boer, 14Aug98 * }
- {-MemAvail-----------------------------------------------------------
- Returns the free memory available under Delphi 3+.
- 14Aug98 LdB
- ---------------------------------------------------------------------}
- FUNCTION MemAvail: LongInt;
- {-MaxAvail-----------------------------------------------------------
- Returns the max free memory block size available under Delphi 3+.
- 14Aug98 LdB
- ---------------------------------------------------------------------}
- FUNCTION MaxAvail: LongInt;
- {***************************************************************************}
- { INITIALIZED PUBLIC VARIABLES }
- {***************************************************************************}
- {---------------------------------------------------------------------------}
- { INITIALIZED DOS/DPMI/WIN/NT/OS2 VARIABLES }
- {---------------------------------------------------------------------------}
- CONST
- ErrorCode: Longint = errOk; { Last error code }
- ErrorInfo: Pointer = Nil; { Last error info }
- {<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>}
- IMPLEMENTATION
- {<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>}
- {$IFDEF PPC_DELPHI3} { DELPHI 3+ COMPILER }
- USES WinTypes, WinProcs; { Stardard units }
- {$ENDIF}
- {***************************************************************************}
- { INTERFACE ROUTINES }
- {***************************************************************************}
- {---------------------------------------------------------------------------}
- { GetErrorCode -> Platforms ALL - Updated 12Jul97 Bazsi }
- {---------------------------------------------------------------------------}
- FUNCTION GetErrorCode: LongInt;
- BEGIN
- GetErrorCode := ErrorCode; { Return last error }
- ErrorCode := 0; { Now clear errorcode }
- END;
- {---------------------------------------------------------------------------}
- { GetErrorInfo -> Platforms ALL - Updated 12Jul97 Bazsi }
- {---------------------------------------------------------------------------}
- FUNCTION GetErrorInfo: Pointer;
- BEGIN
- GetErrorInfo := ErrorInfo; { Return errorinfo ptr }
- END;
- {+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
- { MINIMUM AND MAXIMUM ROUTINES }
- {+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
- FUNCTION Min (I, J: Sw_Integer): Sw_Integer;
- BEGIN
- If (I < J) Then Min := I Else Min := J; { Select minimum }
- END;
- FUNCTION Max (I, J: Sw_Integer): Sw_Integer;
- BEGIN
- If (I > J) Then Max := I Else Max := J; { Select maximum }
- END;
- {---------------------------------------------------------------------------}
- { MinimumOf -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 04Oct99 LdB }
- {---------------------------------------------------------------------------}
- FUNCTION MinimumOf (A, B: Real): Real;
- BEGIN
- If (B < A) Then MinimumOf := B { B smaller take it }
- Else MinimumOf := A; { Else take A }
- END;
- {---------------------------------------------------------------------------}
- { MaximumOf -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 04Oct99 LdB }
- {---------------------------------------------------------------------------}
- FUNCTION MaximumOf (A, B: Real): Real;
- BEGIN
- If (B > A) Then MaximumOf := B { B bigger take it }
- Else MaximumOf := A; { Else take A }
- END;
- {---------------------------------------------------------------------------}
- { MinIntegerOf -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 04Oct99 LdB }
- {---------------------------------------------------------------------------}
- FUNCTION MinIntegerOf (A, B: Integer): Integer;
- BEGIN
- If (B < A) Then MinIntegerOf := B { B smaller take it }
- Else MinIntegerOf := A; { Else take A }
- END;
- {---------------------------------------------------------------------------}
- { MaxIntegerOf -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 04Oct99 LdB }
- {---------------------------------------------------------------------------}
- FUNCTION MaxIntegerOf (A, B: Integer): Integer;
- BEGIN
- If (B > A) Then MaxIntegerOf := B { B bigger take it }
- Else MaxIntegerOf := A; { Else take A }
- END;
- {---------------------------------------------------------------------------}
- { MinLongIntOf -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 04Oct99 LdB }
- {---------------------------------------------------------------------------}
- FUNCTION MinLongIntOf (A, B: LongInt): LongInt;
- BEGIN
- If (B < A) Then MinLongIntOf := B { B smaller take it }
- Else MinLongIntOf := A; { Else take A }
- END;
- {---------------------------------------------------------------------------}
- { MaxLongIntOf -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 04Oct99 LdB }
- {---------------------------------------------------------------------------}
- FUNCTION MaxLongIntOf (A, B: LongInt): LongInt;
- BEGIN
- If (B > A) Then MaxLongIntOf := B { B bigger take it }
- Else MaxLongIntOf := A; { Else take A }
- END;
- FUNCTION MemAvail: LongInt;
- BEGIN
- { Unlimited }
- MemAvail:=high(longint);
- END;
- {---------------------------------------------------------------------------}
- { MaxAvail -> Platforms WIN/NT - Updated 14Aug98 LdB }
- {---------------------------------------------------------------------------}
- FUNCTION MaxAvail: LongInt;
- BEGIN
- { Unlimited }
- MaxAvail:=high(longint);
- END;
- END.
|