fpc/tests/webtbs/uw40634a.pp

81 lines
2.6 KiB
ObjectPascal

{***************************************************************************
* *
* This unit is distributed under the LGPL version 2 *
* *
* Additionally this unit can be used under any newer version (3 or up) *
* of the LGPL *
* *
* Users are also granted the same "linking exception" as defined *
* for the LCL. *
* See the LCL license for details *
* *
* *
***************************************************************************
@author(Martin Friebe)
}
unit uw40634a;
{$mode objfpc}{$H+}
{$INTERFACES CORBA} // no ref counting needed
interface
uses
Classes, SysUtils, uw40634b;
type
TNormalClass = class
strict protected
procedure SetMonitor(AMonitor: IDbgWatchesMonitorIntf); virtual; abstract;
procedure RequestData(AWatchValue: IDbgWatchValueIntf); virtual; abstract;
function Monitor:TObject;virtual; abstract;
end;
{ TInternalDbgSupplierBase }
generic TInternalDbgSupplierBase<
_BASE: TObject;
_SUPPLIER_INTF: IInternalDbgSupplierIntfType;
_MONITOR_INTF //: IInternalDbgMonitorIntfType
>
= class(_BASE)
strict private
FMonitor: _MONITOR_INTF;
// ********************************************************************************
(* "private" is CORRECTLY not working
all others should work, but have different error *)
//private
strict protected
procedure SetMonitor1(AMonitor: _MONITOR_INTF);virtual; abstract;
protected
procedure SetMonitor2(AMonitor: _MONITOR_INTF);virtual; abstract;
public
procedure SetMonitor3(AMonitor: _MONITOR_INTF);virtual; abstract;
// ********************************************************************************
protected
property Monitor: _MONITOR_INTF read FMonitor;
end;
type
{ TWatchesSupplierClassTemplate }
generic TWatchesSupplierClassTemplate<_BASE: TObject> = class(
specialize TInternalDbgSupplierBase<_BASE, IDbgWatchesSupplierIntf, IDbgWatchesMonitorIntf>,
IDbgWatchesSupplierIntf
)
protected
public
procedure RequestData(AWatchValue: IDbgWatchValueIntf); virtual; abstract;
end;
implementation
end.