Ignore:
Timestamp:
Aug 6, 2024, 10:31:16 PM (2 months ago)
Author:
chronos
Message:
  • Modified: Optimized DeviceMapper read/write handlers calls without case statement.
  • Modified: Use TInt as base data type which can be redefined to different higher integer type. For start it is Int64.
Location:
branches/ByteArray
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/ByteArray

    • Property svn:ignore set to
      lib
      heaptrclog.trc
      ByteArray
      ByteArray.dbg
      ByteArray.lps
      ByteArray.res
  • branches/ByteArray/Devices/Device.pas

    r5 r9  
    44
    55uses
    6   Classes, SysUtils, Channel, Forms, BigInt, Common.FormEx;
     6  Classes, SysUtils, Channel, Forms, Int, Common.FormEx, Generics.Collections;
    77
    88type
     
    1212  TFormDevice = class;
    1313
     14  TReadEvent = function (DataSize: TIntSize): TInt of object;
     15  TWriteEvent = procedure (DataSize: TIntSize; Value: TInt) of object;
     16  TReadEvents = TList<TReadEvent>;
     17  TWriteEvents = TList<TWriteEvent>;
     18
     19  { THandlers }
     20
     21  THandlers = class
     22    ReadHandlers: TReadEvents;
     23    WriteHandlers: TWriteEvents;
     24    constructor Create;
     25    destructor Destroy; override;
     26  end;
     27
    1428  { TDevice }
    1529
     
    1832    DeviceClass: TDeviceClass;
    1933    Form: TFormDevice;
    20     BaseAddress: Integer;
    21     function GetAddressCount: Integer; virtual;
    22     procedure SetChannel(Channel: TChannel); virtual;
     34    function GetHandlers: THandlers; virtual;
    2335  end;
    2436
     
    6072end;
    6173
     74{ THandlers }
     75
     76constructor THandlers.Create;
     77begin
     78  ReadHandlers := TReadEvents.Create;
     79  WriteHandlers := TWriteEvents.Create;
     80end;
     81
     82destructor THandlers.Destroy;
     83begin
     84  FreeAndNil(ReadHandlers);
     85  FreeAndNil(WriteHandlers);
     86  inherited;
     87end;
     88
    6289{ TDevice }
    6390
    64 function TDevice.GetAddressCount: Integer;
     91function TDevice.GetHandlers: THandlers;
    6592begin
    66   Result := 0;
    67 end;
    68 
    69 procedure TDevice.SetChannel(Channel: TChannel);
    70 begin
     93  Result := nil;
    7194end;
    7295
Note: See TracChangeset for help on using the changeset viewer.