lazarus/components/buildintf/macrodefintf.pas

77 lines
1.8 KiB
ObjectPascal

{ Copyright (C) 2012
*****************************************************************************
See the file COPYING.modifiedLGPL.txt, included in this distribution,
for details about the license.
*****************************************************************************
Abstract:
Interface to the IDE macros.
}
unit MacroDefIntf;
{$mode objfpc}{$H+}
interface
uses
Classes;
Type
TTransferMacro = class;
TOnSubstitution = procedure(TheMacro: TTransferMacro; const MacroName: string;
var s:string; const Data: PtrInt; var Handled, Abort: boolean;
Depth: integer) of object;
TMacroFunction = function(const s: string; const Data: PtrInt;
var Abort: boolean): string of object;
TTransferMacroFlag = (
tmfInteractive,
tmfLazbuild // store value for lazbuild
);
TTransferMacroFlags = set of TTransferMacroFlag;
{ TTransferMacro }
TTransferMacro = class
private
FLazbuildValue: string;
protected
procedure SetLazbuildValue(const AValue: string); virtual;
public
Name: string;
Value: string;
Description: string;
MacroFunction: TMacroFunction;
Flags: TTransferMacroFlags;
property LazbuildValue: string read FLazbuildValue write SetLazbuildValue;
constructor Create(const AName, AValue, ADescription:string;
AMacroFunction: TMacroFunction; TheFlags: TTransferMacroFlags);
end;
implementation
{ TTransferMacro }
procedure TTransferMacro.SetLazbuildValue(const AValue: string);
begin
if FLazbuildValue=AValue then Exit;
FLazbuildValue:=AValue;
end;
constructor TTransferMacro.Create(const AName, AValue, ADescription: string;
AMacroFunction: TMacroFunction; TheFlags: TTransferMacroFlags);
begin
Name:=AName;
Value:=AValue;
Description:=ADescription;
MacroFunction:=AMacroFunction;
Flags:=TheFlags;
end;
end.