Files
bds.mr.dpg/src.lib/dpglib.ExceptionSpec.pas
T
2026-01-03 18:33:48 +01:00

98 lines
3.1 KiB
ObjectPascal

unit dpglib.ExceptionSpec;
interface
uses
System.Classes,
dpgrtl.types,
dpglib.Types;
type
// =========================================================================
// Class TExceptionSpec declaration
// =========================================================================
TExceptionSpec = class( TInterfacedObject,
IExceptionSpec)
// ---------------------------------------------------------------
// Members
// ---------------------------------------------------------------
protected
fLabel : IToken;
fHandlers : TInterfaceList;
// ---------------------------------------------------------------
// Constructor/destructor
// ---------------------------------------------------------------
public
constructor Create( pLabel: IToken);
destructor Destroy; override;
// ---------------------------------------------------------------
// IExceptionSpec methods
// ---------------------------------------------------------------
protected
function GetLabel : IToken;
function GetHandlers: TInterfaceList;
public
procedure AddHandler( pHandler: IExceptionHandler);
end;
implementation
uses
System.SysUtils;
// ****************************************************************************
// Constructor/destructor
// ****************************************************************************
// ============================================================================
// Constructor
// ============================================================================
constructor TExceptionSpec.Create(pLabel: IToken);
begin
inherited Create;
fLabel := pLabel;
fHandlers := TInterfaceList.Create;
end;
// ============================================================================
// Destructor
// ============================================================================
destructor TExceptionSpec.Destroy;
begin
FreeAndNil( fHandlers);
fLabel := nil;
inherited;
end;
// ****************************************************************************
// IExceptionSpec implementation
// ****************************************************************************
// ============================================================================
// GetLabel
// ============================================================================
function TExceptionSpec.GetLabel: IToken;
begin
result := fLabel;
end;
// ============================================================================
// GetHandlers
// ============================================================================
function TExceptionSpec.GetHandlers: TInterfaceList;
begin
result := fHandlers;
end;
// ============================================================================
// AddHandler
// ============================================================================
procedure TExceptionSpec.AddHandler(pHandler: IExceptionHandler);
begin
fHandlers.Add( pHandler);
end;
end.