* Abstracted handling of defines

git-svn-id: trunk@20169 -
This commit is contained in:
michael 2012-01-25 08:48:07 +00:00
parent b3c246e9f6
commit 24d175e0a7
2 changed files with 41 additions and 24 deletions

View File

@ -348,7 +348,7 @@ var
begin
case s[2] of
'd': // -d define
Scanner.Defines.Append(UpperCase(Copy(s, 3, Length(s))));
Scanner.AddDefine(UpperCase(Copy(s, 3, Length(s))));
'F': // -F
if (length(s)>2) and (s[3] = 'i') then // -Fi include path
FileResolver.AddIncludePath(Copy(s, 4, Length(s)));
@ -378,42 +378,42 @@ begin
FileResolver := TFileResolver.Create;
FileResolver.UseStreams:=UseStreams;
Scanner := TPascalScanner.Create(FileResolver);
Scanner.Defines.Append('FPK');
Scanner.Defines.Append('FPC');
Scanner.AddDefine('FPK');
Scanner.AddDefine('FPC');
SCanner.LogEvents:=AEngine.ScannerLogEvents;
SCanner.OnLog:=AEngine.Onlog;
// TargetOS
s := UpperCase(OSTarget);
Scanner.Defines.Append(s);
Scanner.AddDefine(s);
if s = 'LINUX' then
Scanner.Defines.Append('UNIX')
Scanner.AddDefine('UNIX')
else if s = 'FREEBSD' then
begin
Scanner.Defines.Append('BSD');
Scanner.Defines.Append('UNIX');
Scanner.AddDefine('BSD');
Scanner.AddDefine('UNIX');
end else if s = 'NETBSD' then
begin
Scanner.Defines.Append('BSD');
Scanner.Defines.Append('UNIX');
Scanner.AddDefine('BSD');
Scanner.AddDefine('UNIX');
end else if s = 'SUNOS' then
begin
Scanner.Defines.Append('SOLARIS');
Scanner.Defines.Append('UNIX');
Scanner.AddDefine('SOLARIS');
Scanner.AddDefine('UNIX');
end else if s = 'GO32V2' then
Scanner.Defines.Append('DPMI')
Scanner.AddDefine('DPMI')
else if s = 'BEOS' then
Scanner.Defines.Append('UNIX')
Scanner.AddDefine('UNIX')
else if s = 'QNX' then
Scanner.Defines.Append('UNIX');
Scanner.AddDefine('UNIX');
// TargetCPU
s := UpperCase(CPUTarget);
Scanner.Defines.Append('CPU'+s);
Scanner.AddDefine('CPU'+s);
if (s='x86_64') then
Scanner.Defines.Append('CPU64')
Scanner.AddDefine('CPU64')
else
Scanner.Defines.Append('CPU32');
Scanner.AddDefine('CPU32');
Parser := TPasParser.Create(Scanner, FileResolver, AEngine);
Filename := '';

View File

@ -345,6 +345,8 @@ type
destructor Destroy; override;
procedure OpenFile(const AFilename: string);
function FetchToken: TToken;
Procedure AddDefine(S : String);
Procedure RemoveDefine(S : String);
property FileResolver: TBaseFileResolver read FFileResolver;
property CurSourceFile: TLineReader read FCurSourceFile;
@ -1184,10 +1186,7 @@ begin
Param := UpperCase(Param);
Index:=Pos(':=',Param);
If (Index=0) then
begin
if Defines.IndexOf(Param) < 0 then
Defines.Add(Param);
end
AddDefine(Param)
else
begin
MV:=Trim(Param);
@ -1208,9 +1207,9 @@ Var
begin
Param := UpperCase(Param);
Index := Defines.IndexOf(Param);
if Index >= 0 then
Defines.Delete(Index)
Index:=FDefines.IndexOf(Param);
If (Index<0) then
RemoveDefine(Param)
else
begin
Index := FMacros.IndexOf(Param);
@ -1786,4 +1785,22 @@ begin
FOptions:=AValue;
end;
Procedure TPascalScanner.AddDefine(S : String);
begin
If FDefines.IndexOf(S)=-1 then
FDefines.Add(S);
end;
Procedure TPascalScanner.RemoveDefine(S : String);
Var
I : Integer;
begin
I:=FDefines.IndexOf(S);
if (I<>-1) then
FDefines.Delete(I);
end;
end.