unit tw6989;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils;

const
  ltValue   = 3;



type
  TDebugClass = 0..31;


  { TLogger }

  TLogger = class
  private
    FDefaultClass: TDebugClass;
   // FChannels:TChannelList;
    procedure SendString(AMsgType: Integer;const AText:String);
  public
    ActiveClasses: set of TDebugClass;//Made a public field toallow use of include
    constructor Create;
    destructor Destroy; override;
    procedure Clear;
    procedure Send(const AText: String); inline;
    procedure Send(AClass: TDebugClass; const AText: String);
    procedure Send(const AText: String; Args: array of const); inline;
    procedure Send(AClass: TDebugClass; const AText: String; Args: array of const);
    procedure Send(const AText, AValue: String); inline;
    procedure Send(AClass: TDebugClass; const AText,AValue: String);
    procedure Send(const AText: String; AValue: Integer); inline;
    procedure Send(AClass: TDebugClass; const AText: String; AValue: Integer);
    procedure Send(const AText: String; AValue: Boolean); inline;
    procedure Send(AClass: TDebugClass; const AText: String; AValue: Boolean);
    procedure Send(const AText: String; ARect: TRect); inline;
    //if the next inline is commented no error occurs
    procedure Send(AClass: TDebugClass; const AText: String; ARect: TRect); inline;
  end;

implementation

{ TLogger }

procedure TLogger.SendString(AMsgType: Integer; const AText: String);
begin
end;

constructor TLogger.Create;
begin
end;

destructor TLogger.Destroy;
begin
end;

procedure TLogger.Clear;
begin
end;

procedure TLogger.Send(const AText: String);
begin
end;

procedure TLogger.Send(AClass: TDebugClass; const AText: String);
begin
end;

procedure TLogger.Send(const AText: String; Args: array of const);
begin
end;

procedure TLogger.Send(AClass: TDebugClass; const AText: String;
  Args: array of const);
begin
end;

procedure TLogger.Send(const AText, AValue: String);
begin
end;

procedure TLogger.Send(AClass: TDebugClass; const AText, AValue: String);
begin
end;

procedure TLogger.Send(const AText: String; AValue: Integer);
begin
end;

procedure TLogger.Send(AClass: TDebugClass; const AText: String; AValue: Integer);
begin
end;

procedure TLogger.Send(const AText: String; AValue: Boolean);
begin
end;

procedure TLogger.Send(AClass: TDebugClass; const AText: String; AValue: Boolean);
begin
end;

procedure TLogger.Send(const AText: String; ARect: TRect);
begin

end;

procedure TLogger.Send(AClass: TDebugClass; const AText: String; ARect: TRect);
begin
  //if this body procedure is commented also no error occurs
  if not (AClass in ActiveClasses) then Exit;
  with ARect do
    SendString(ltValue,Format('%s = (Left: %d; Top: %d; Right: %d; Bottom: %d)',[AText,Left,Top,Right,Bottom]));
end;
end.