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/Serial.pas

    r5 r9  
    44
    55uses
    6   Classes, SysUtils, Device, BigInt, Channel;
     6  Classes, SysUtils, Device, Int, Channel;
    77
    88type
     
    1717    FOnWrite: TWriteEvent;
    1818  public
    19     function Read(Address: TBigInt; Size: TBigIntSize): TBigInt;
    20     procedure Write(Address: TBigInt; Size: TBigIntSize; Value: TBigInt);
    21     function GetAddressCount: Integer; override;
    22     procedure SetChannel(Channel: TChannel); override;
     19    function ReadData(Size: TIntSize): TInt;
     20    procedure WriteData(Size: TIntSize; Value: TInt);
     21    function GetHandlers: THandlers; override;
    2322    property OnWrite: TWriteEvent read FOnWrite write FOnWrite;
    2423    property OnRead: TReadEvent read FOnRead write FOnRead;
     
    3029{ TSerial }
    3130
    32 function TSerial.Read(Address: TBigInt; Size: TBigIntSize): TBigInt;
     31function TSerial.ReadData(Size: TIntSize): TInt;
    3332begin
    34   case Integer(Address) of
    35     0: if Assigned(FOnRead) then Result := FOnRead;
    36   end;
     33  if Assigned(FOnRead) then Result := FOnRead;
    3734end;
    3835
    39 procedure TSerial.Write(Address: TBigInt; Size: TBigIntSize; Value: TBigInt);
     36procedure TSerial.WriteData(Size: TIntSize; Value: TInt);
    4037begin
    41   case Integer(Address) of
    42     0: if Assigned(FOnWrite) then FOnWrite(Value);
    43   end;
     38  if Assigned(FOnWrite) then FOnWrite(Value);
    4439end;
    4540
    46 function TSerial.GetAddressCount: Integer;
     41function TSerial.GetHandlers: THandlers;
    4742begin
    48   Result := 1;
    49 end;
    50 
    51 procedure TSerial.SetChannel(Channel: TChannel);
    52 begin
    53   Channel.Read := Read;
    54   Channel.Write := Write;
     43  Result := THandlers.Create;
     44  Result.ReadHandlers.Add(ReadData);
     45  Result.WriteHandlers.Add(WriteData);
    5546end;
    5647
Note: See TracChangeset for help on using the changeset viewer.