XPTokenMulticaster.pas
上传用户:yjb1804
上传日期:2021-01-30
资源大小:3105k
文件大小:3k
源码类别:

Email服务器

开发平台:

Delphi

  1. unit XPTokenMulticaster;
  2. {
  3.  $Source: /cvsroot/dunit/dunit/Contrib/DUnitWizard/Source/DelphiExperts/Common/XPTokenMulticaster.pas,v $
  4.  $Revision: 1.2 $
  5.  $Date: 2004/05/03 15:07:15 $
  6.  Last amended by $Author: pvspain $
  7.  $State: Exp $
  8.  TXPTokenMulticaster:
  9.  Copyright (c) 2001 by The Excellent Programming Company Pty Ltd
  10.  (ABN 27 005 394 918). All rights reserved. This source code is not to be
  11.  redistributed without prior permission from the copyright holder.
  12.  }
  13. interface
  14. uses XPEvent, XPToken;
  15. ///////////////////////////////////////////////////////////////////////////
  16. ///        IXPTokenMulticaster declaration
  17. ///////////////////////////////////////////////////////////////////////////
  18. type
  19.   IXPTokenMulticaster = interface(IXPCount)
  20.     ['{7EF7F401-48E3-11D5-8CC7-0080ADB62643}']
  21.     procedure Add(const Handler: TXPTokenEvent);
  22.     function Insert(const Handler: TXPTokenEvent;
  23.       const idx: integer): integer;
  24.     procedure Delete(const Handler: TXPTokenEvent);
  25.     function Handler: TXPTokenEvent;
  26.     procedure Notify(const Token: TXPToken);
  27.     procedure Clear;
  28.     end;
  29. function CreateIXPTokenMulticaster: IXPTokenMulticaster;
  30. implementation
  31. const CVSID: string = '$Header: /cvsroot/dunit/dunit/Contrib/DUnitWizard/Source/DelphiExperts/Common/XPTokenMulticaster.pas,v 1.2 2004/05/03 15:07:15 pvspain Exp $';
  32. ///////////////////////////////////////////////////////////////////////////
  33. ///        IXPTokenMulticaster implementation
  34. ///////////////////////////////////////////////////////////////////////////
  35. type
  36.   TXPTokenMulticaster = class(TXPEventMulticaster, IXPTokenMulticaster)
  37.     protected
  38.     procedure Add(const Handler: TXPTokenEvent);
  39.     function Insert(const Handler: TXPTokenEvent;
  40.       const idx: integer): integer;
  41.     procedure Delete(const Handler: TXPTokenEvent);
  42.     procedure Notify(const Token: TXPToken);
  43.     function Handler: TXPTokenEvent;
  44.     end;
  45. procedure TXPTokenMulticaster.Add(const Handler: TXPTokenEvent);
  46.   begin
  47.   inherited Add(TXPEvent(Handler));
  48.   end;
  49. procedure TXPTokenMulticaster.Delete(const Handler: TXPTokenEvent);
  50.   begin
  51.   inherited Delete(TXPEvent(Handler));
  52.   end;
  53. function TXPTokenMulticaster.Insert(const Handler: TXPTokenEvent;
  54.   const idx: integer): integer;
  55.   begin
  56.   Result := inherited Insert(TXPEvent(Handler), idx);
  57.   end;
  58. procedure TXPTokenMulticaster.Notify(const Token: TXPToken);
  59.   var
  60.   idx: integer;
  61.   begin
  62.   for idx := 0 to Count - 1 do
  63.     TXPTokenEvent(Events[idx])(Token);
  64.   end;
  65. function TXPTokenMulticaster.Handler: TXPTokenEvent;
  66.   begin
  67.   Result := Notify;
  68.   end;
  69. function CreateIXPTokenMulticaster: IXPTokenMulticaster;
  70.   begin
  71.   Result := TXPTokenMulticaster.Create;
  72.   end;
  73. end.